Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C vim:如果是';这是一个成功_C_Vim_G++ - Fatal编程技术网

C vim:如果是';这是一个成功

C vim:如果是';这是一个成功,c,vim,g++,C,Vim,G++,要编译并运行C程序,我使用“:make”,但如果编译成功,我也希望运行编译后的程序 我写 au FileType c setlocal makeprg=g++\ %\ \&\&\ ./a.out 在vimrc中,这是可行的,但是当我的代码中有一些错误时,我有一个vim错误,所以vim没有将光标放在正确的行上。 我得到这个错误: E40:无法打开错误文件 /tmp/vEtUQQ2/0 是否有解决方法、修复方法或其他方法来实现此目的?您可以在makefile中创建一个目标来运行程序

要编译并运行C程序,我使用“:make”,但如果编译成功,我也希望运行编译后的程序

我写

au FileType c setlocal makeprg=g++\ %\ \&\&\ ./a.out
在vimrc中,这是可行的,但是当我的代码中有一些错误时,我有一个vim错误,所以vim没有将光标放在正确的行上。 我得到这个错误:

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


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

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

…然后在vim中,您将执行以下操作:

:make run

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

使用QuickFixCmdPost(Autocmd事件)检查在运行“:make”之后是否存在生成错误。 如果没有错误,运行新编译的程序

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

您可能想将脚本放在编译器插件的命名空间下

谢谢Martin,但我不会在小的开发中使用Makefile。谢谢Mike Lue,这似乎是我想要的,但我不知道怎么做。我已经测试过了,但不起作用:au FileType c setlocal makeprg=g++\%;au QuickfixCmdPost c./a。out@sputnick在运行
:make
之前,应该先运行autocmd,可能是在.vimrc或vim start上自动加载的其他文件中。然后,autocmd将在:make命令运行后但在显示错误列表之前触发。不完全正确,请参阅注释。我也有同样的问题,有人知道为什么会发生此错误吗?
autocmd QuickfixCmdPost make call AfterMakeC()
function! AfterMakeC()
    " No any error after make
    if len(getqflist()) == 0
        !./a.out
    endif
    " :~)
endfunction