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

Gil*_*not 10 c vim g++

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

我写

au FileType c setlocal makeprg=g++\ %\ \&\&\ ./a.out
Run Code Online (Sandbox Code Playgroud)

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

E40:无法打开errorfile/tmp/vEtUQQ2/0

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

Mar*_*rst 9

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

.PHONY : run
run : $(PROG) # assuming $(PROG) is the name of your program
    ./$(PROG)
Run Code Online (Sandbox Code Playgroud)

...然后在vim你会做:

:make run
Run Code Online (Sandbox Code Playgroud)

  • 谢谢 Martin,但我不使用 Makefile 进行小型开发。 (2认同)

Mik*_*Lue 7

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

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

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

您可能希望将脚本置于编译器插件中的命名空间下