1

对于在源文件的父目录中具有 Makefile 的项目,在 vim 中我将 makeprg 变量设置为:

:set makeprg=[[\ -f\ Makefile\ ]]\ &&\ make\ \\|\\|\ make\ -C\ ..

正如这个线程中所建议的

这种替换对父目录中的 Makefile 非常有效,但当 Makefile 在当前目录中时会中断。

vim make 和 :make 命令的无限循环。如果找不到 Makefile,我已经尝试了运行命令,并且我确定在运行 make 之后,vim 无论如何都会运行三元的失败案例(作为编辑器命令)。

因此,对 :make 的新调用扩展为无限地拥有另一个 :make。

如何防止 vim 尝试执行此操作?

4

1 回答 1

7

运行三元的失败案例,因为显然,make在当前目录中的调用返回错误。makeprg您可以通过如下设置来防止此缺陷:

:let &makeprg = 'if [ -f Makefile ]; then make; else make -C ..; fi'

使用let构造避免了逃生标志的必要性。这是在您所指的同一线程中建议的,here

或者您可以在当前目录中修复make问题,使其不会返回错误代码...

于 2013-03-09T03:28:28.380 回答