我想要做的似乎是一个非常基本的东西,但我找不到任何关于它的东西.我正在研究像往常一样建造的项目:
project |-- bin |-- inc `-- src
我想使用Vim中包含的make命令来创建我的项目.但每次我必须指定:make -C ../
.我更喜欢,如果当前目录中没有Makefile文件,请进入父目录.我已经这样做了
set tags+=./tags;/
在我的.vimrc
.
此外,make默认是丑陋的.是否有添加颜色的选项,并允许直接访问错误(如在Emacs中).
谢谢
亚当说的略有改动:
:set makeprg=[[\ -f\ Makefile\ ]]\ &&\ make\ \\\|\\\|\ make\ -C\ ..
未转义,这是
[[ -f Makefile ]] && make || make -C ..
这意味着,伪代码风格
if file-exists(Makefile) then make else make -C ..
这只是一个目录.如果你想要一个更通用的解决方案,可以根据需要添加多个目录,你需要能够搜索祖先目录,直到找到一个Makefile,我不知道如何只是从命令中这样做线.但是编写一个脚本(用你喜欢的任何语言),然后从你的makeprg中调用它应该不难.
斜率的解决方案是第一步,但是在vim负载下计算.当我加载多选项卡会话时,路径可能会从一个选项卡到另一个选项卡不一致.
这是我的解决方案(+ tab with tabnew).
fun! SetMkfile() let filemk = "Makefile" let pathmk = "./" let depth = 1 while depth < 4 if filereadable(pathmk . filemk) return pathmk endif let depth += 1 let pathmk = "../" . pathmk endwhile return "." endf command! -nargs=* Make tabnew | let $mkpath = SetMkfile() | make-C $mkpath | cwindow 10