vim: make для компиляции и запуска кода на C, если он успешен - PullRequest
10 голосов
/ 05 ноября 2010

, чтобы скомпилировать и запустить программы на C, я использую ": make", но я хотел бы также запустить скомпилированную программу, если компиляция прошла успешно.

Я написал

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

в vimrc, это работает, но у меня есть ошибка vim, когда в моем коде есть ошибки, поэтому vim не помещает курсор на хорошую строку. Я получаю эту ошибку:

E40: не удается открыть файл ошибок / TMP / vEtUQQ2 / 0

Есть ли обходной путь, исправление или другой способ добиться этого?

Ответы [ 2 ]

9 голосов
/ 05 ноября 2010

Вы можете создать цель в вашем make-файле для запуска программы (скажем, «запустить»):

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

... а затем в vim вы должны сделать:

:make run
7 голосов
/ 05 ноября 2010

Есть способ с чистым vim сделать это, но это немного раздражает.

Использование QuickFixCmdPost (событие Autocmd) для проверки наличия ошибки сборки после выполнения команды ': make'. А если ошибок нет, запустите заново скомпилированную программу.

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

Возможно, вы захотите поместить скрипт в пространство имен в плагине компилятора

...