C vim:如果是';这是一个成功
要编译并运行C程序,我使用“:make”,但如果编译成功,我也希望运行编译后的程序 我写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中创建一个目标来运行程序
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