1

我是一个新的 vim 用户,所以我正在尝试修改 vim 以满足我的需要。

假设我有 project/main.cpp 和 project/build。当我执行“make -j5 install”时,项目/构建内部的哪个位置正在构建和正确安装我的项目。但是当我试图从 vim 内部执行此操作时,它不起作用。这是我使用的代码....

map <F5> :call BuildGitRepo()<cr>

function! BuildGitRepo() 
    :cd %:p:h
    let currentFileDir = :pw
    :cd currentFileDir
    :cd "build"
    :!make -j5 install
endfunction
4

1 回答 1

0

vimrc 文件中的 Vim 脚本的功能与 Vim 窗口稍有不同。以开头的命令:在 vim 脚本中成为本地命令,这意味着您不需要冒号。此外,使用局部变量有点不同 - 您需要使用 exec。

:最后,如果没有缓冲区重定向,您无法捕获命令的输出,但您可以使用该getcwd()函数获取当前工作目录。但看起来你要cd访问当前文件的目录两次,所以我把它简化了一点。

这是应该在 vimrc 文件中工作的函数版本:

map <F5> :call BuildGitRepo()<cr>

function! BuildGitRepo() 
    exec "cd " . expand("%:p:h") ."/build"
    !make -j5 install
endfunction
于 2012-11-22T12:57:41.333 回答