我是一个新的vim用户,他正在寻找一个允许我调用mvn build的脚本的帮助。
目前我将其映射如下
map <F3> :! mvn build<CR>
但是因为这会尝试在我当前的工作目录中进行构建(目前是java开发所以我通常深入src下的包中)
我如何进入目录结构以使这个mvn build命令正常工作?
提前谢谢
答案 0 :(得分:3)
vimscript函数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()