2010-11-04 78 views
9

編譯C程序並運行它,我使用「:make」,但如果編譯成功,我也想運行編譯的程序。vim:編譯並運行C代碼如果它是成功的

我的vimrc,該作品寫

au FileType c setlocal makeprg=g++\ %\ \&\&\ ./a.out 

,但我有一個vim的錯誤時有一個在我的代碼中的一些錯誤,所以VIM不要把光標放在好線。 我得到這個錯誤:

E40:無法打開錯誤文件 的/ tmp/vEtUQQ2/0

有一種解決方法,修復或另一種方式來實現這一目標?

回答

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 

您可能希望把腳本中編譯器插件

+0

謝謝Mike Lue,看起來真的是我在找的東西,但我不知道該怎麼做。 我已經測試過,但那不起作用: \t au FileType c setlocal makeprg = g ++ \%; \t au QuickfixCmdPost c ./a.out – 2010-11-07 12:12:04

+0

@sputnick在運行':make'之前應該運行autocmd,可能在你的.vimrc或其他自動加載到vim start的文件中。然後,autocmd將在make命令運行之後但在顯示錯誤列表之前觸發。 – 2010-11-08 16:41:20

+0

感謝您的編輯Mike Lue! – 2010-11-12 22:55:57

8

你可以在你的makefile運行程序創建一個目標(說 '跑'):

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

...然後在vim你會做:

:make run 
+1

感謝馬丁下的命名空間,但我不使用的Makefile小的發展。 – 2010-11-07 12:11:03

相關問題