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