2011-04-11 82 views
2

我是一個新的vim用戶,他正在尋找一個可以讓我調用mvn build的腳本。如何遍歷目錄結構並在vimscript中啓動mvn構建?

目前我這個映射如下

map <F3> :! mvn build<CR> 

但由於這種試圖做構建在我當前的工作目錄(目前java開發,所以我在src我深深的包通常)

我該如何走上目錄結構,這樣mvn build命令才能正常工作?

預先感謝您

回答

3

的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() 
+0

優良的命令 - 如果我想CD了1多個目錄(1起來自SRC那就是) - 我該如何修改該功能?謝謝! – JimmyBond 2011-04-12 12:30:25

+0

@JimmyBond:你可以在第一個'let'之後'​​let src_dir = fnamemodify(src_dir,':p:h')'。 – intuited 2011-04-12 13:15:16

+0

沒關係 - 它看起來像一個簡單的執行'CD ..'後cd進入src作品!再次感謝! – JimmyBond 2011-04-12 13:17:08