我是一个新的 vim 用户,正在寻找一个可以让我调用 mvn build 的脚本的帮助。
目前我将其映射如下
map <F3> :! mvn build<CR>
但是因为这尝试在我当前的工作目录中进行构建(当前是java开发,所以我通常深入src下的包中)
我怎样才能向上移动目录结构以使这个 mvn build 命令正常工作?
提前谢谢
最佳答案
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()
关于maven - 如何在 vimscript 中遍历目录结构并启动 mvn build?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5625160/