VIM 用户定义的函数映射不符合我的预期

VIM user defined function mapping doesn't work as I expected

我希望当我编辑某个目录下的一些源文件时,按下将触发cmake并进行构建,如下所示:

command -bang -nargs=? Umake call Myfunction(<bang>0)
function! Myfunction(forced)
    lcd %:p:h
    call system('cmake && make')
endfunction
nmap <F5> :Umake<cr>

这段代码是从网上抄来的,做了一些修改,不太确定是否完全可以。重新输入vim后,按 ,左下命令windows显示“:Su”,没有任何反应。

(1) 为什么没有任何反应,Myfunction 中的任何语法问题? (2) "command -bang" 行是必须的吗?这里的0是什么意思?

谢谢。

你不想用 system()

编译

改为设置 :let &makeprg = 'cd "compilation/dir" && make $*'。然后:make target -j 12.

同样,build-tool-wrappers 插件已经处理 out-of-source 树编译(具有多个编译目录)、目标检测、后台编译...