vim:make如果成功则编译并运行C代码

时间:2010-11-04 23:19:51

标签: c vim g++

编译C程序并运行它,我使用“:make”但是如果编译成功,我也想运行已编译的程序。

我写了

au FileType c setlocal makeprg=g++\ %\ \&\&\ ./a.out
在vimrc中的

,这是有效的,但是当我的代码中出现一些错误时,我有一个vim错误,因此vim不会将光标放在好的行上。 我收到这个错误:

  

E40:无法打开错误文件   的/ tmp / vEtUQQ2 / 0

是否有解决方法,修复或其他方法来实现此目标?

2 个答案:

答案 0 :(得分:8)

您可以在makefile中创建一个目标来运行程序(比如说'run'):

.PHONY : run
run : $(PROG) # assuming $(PROG) is the name of your program
    ./$(PROG)

...然后在vim中你会这样做:

:make run

答案 1 :(得分:7)

纯粹的vim有一种方法可以做到这一点,但它有点烦人。

使用QuickFixCmdPost(Autocmd事件)检查':make'运行后是否存在构建错误。 如果没有错误,请运行新编译的程序。

autocmd QuickfixCmdPost make call AfterMakeC()
function! AfterMakeC()
    " No any error after make
    if len(getqflist()) == 0
        !./a.out
    endif
    " :~)
endfunction

您可能希望将脚本放在编译器插件

中的命名空间下