如何遍历目录结构并在vimscript中启动mvn build?

时间:2011-04-11 17:33:35

标签: maven vim

我是一个新的vim用户,他正在寻找一个允许我调用mvn build的脚本的帮助。

目前我将其映射如下

map <F3> :! mvn build<CR>

但是因为这会尝试在我当前的工作目录中进行构建(目前是java开发所以我通常深入src下的包中)

我如何进入目录结构以使这个mvn build命令正常工作?

提前谢谢

1 个答案:

答案 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()