2
我是一個新的vim用戶,他正在尋找一個可以讓我調用mvn build的腳本。如何遍歷目錄結構並在vimscript中啓動mvn構建?
目前我這個映射如下
map <F3> :! mvn build<CR>
但由於這種試圖做構建在我當前的工作目錄(目前java開發,所以我在src我深深的包通常)
我該如何走上目錄結構,這樣mvn build命令才能正常工作?
預先感謝您
我是一個新的vim用戶,他正在尋找一個可以讓我調用mvn build的腳本。如何遍歷目錄結構並在vimscript中啓動mvn構建?
目前我這個映射如下
map <F3> :! mvn build<CR>
但由於這種試圖做構建在我當前的工作目錄(目前java開發,所以我在src我深深的包通常)
我該如何走上目錄結構,這樣mvn build命令才能正常工作?
預先感謝您
的vim腳本功能finddir()
可以用來尋找src
目錄。在第二個參數(path
)使用的語法有一些augmentations to basic path specification,其中之一是使用;
指定一個向上搜索的能力:
let src_dir = finddir('src', ';')
這將找到src目錄下,如果它是當前目錄之上。
爲此目錄中的一個版本,您可以運行
exec '!cd' shellescape(src_dir) '&& mvn build'
我不認爲這會工作在Windows下。在這種情況下,我想你應該使用vim的cd
命令臨時更改目錄,運行命令,然後使用:cd -
更改回來。
您可以將這些命令組合成一個功能
function! RunMavenInSrcDir()
let src_dir = finddir('src', ';')
exec 'cd' fnameescape(src_dir)
!mvn build
cd -
endfunction
運行此功能將重挫vim的一個當前目錄的副作用:換句話說,做:cd -
事後不一定會改變的相同的目錄它會有。
你可以安排有由映射調用函數與
map <F3> :call RunMavenInSrcDir()<CR>
或用
command! RunMavenInSrcDir call RunMavenInSrcDir()
優良的命令 - 如果我想CD了1多個目錄(1起來自SRC那就是) - 我該如何修改該功能?謝謝! – JimmyBond 2011-04-12 12:30:25
@JimmyBond:你可以在第一個'let'之後'let src_dir = fnamemodify(src_dir,':p:h')'。 – intuited 2011-04-12 13:15:16
沒關係 - 它看起來像一個簡單的執行'CD ..'後cd進入src作品!再次感謝! – JimmyBond 2011-04-12 13:17:08