2010-11-04 14 views
9

para compilar programas C y ejecutarlo, yo uso ": make" pero me gustaría ejecutar el programa compilado también si la compilación es un éxito.vim: hacer para compilar y ejecutar código C si es un éxito

me escribió

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

en vimrc, que funciona, pero tengo un error de vim cuando hay algunos errores en mi código, por lo que vim no ponga el cursor en la buena línea. consigo este error:

E40: No se puede ErrorFile abierta /tmp/vEtUQQ2/0

¿Hay una solución, una solución u otra manera de lograr esto?

Respuesta

7

Hay una forma con vim puro para hacerlo, pero es un poco molesto.

Usando QuickFixCmdPost (Evento Autocmd) para verificar si hay error de construcción después de ejecutar ': make'. Y si no hay errores, ejecute el programa recién compilado.

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

Es posible que desee poner el guión bajo el espacio de nombres en plugin del compilador

+0

Gracias Mike Lue, parece ser lo que estoy buscando, pero no entiendo cómo hacerlo. Lo he probado, pero eso no funciona: \t au FileType c setlocal makeprg = g ++ \%; \t au QuickfixCmdPost c ./a.out –

+0

@sputnick El autocmd debe ejecutarse antes de ejecutar ': make', posiblemente en su .vimrc u otro archivo cargado automáticamente en vim start. Luego, el autocmd se activará después de que: el comando make se ejecute pero antes de que se muestre la lista de errores. –

+0

Gracias por la edición Mike Lue! –

8

Se puede crear un destino en el makefile para ejecutar el programa (dicen 'run'):

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

... y luego, en vim que haría:

:make run 
+1

Gracias Martin, pero yo no uso Makefile para los pequeños desarrollos. –

Cuestiones relacionadas