2010-09-17 8 views
11

Quiero llamar un comando cuando guardo el archivo. Lo estoy llamando por :make manualmente ahora, pero me gustaría que se pudiera llamar cuando ejecuto :w y :wq.Vim save then make automatically?

También quiero habilitar esta función en cualquier subcarpeta que no contenga un archivo Makefile pero sus padres contienen uno. Al igual que este tema, dijo, pero no funciona para mí:

How to efficiently "make" with Vim

+0

http://stackoverflow.com/questions/729249/how-to-efficiently-make-with-vim –

Respuesta

12
 
:autocmd BufWritePost <buffer> make 
+0

el "hacer" es como un comando shell o una comando vim? podría ser una función vim? –

+0

': make' es un comando vim que ejecuta el comando' make' shell y lee su resultado para asegurarse de que todo funcionó. –

+0

Si desea guardar algunas veces sin autocomando, agregue 'noautocmd'. por ejemplo: 'noautocmd wq'. Puede asignar una clave para guardar y cerrar, como F4 editando vimrc con 'vim ~/.vimrc', luego agregue la línea:' map : noautocmd wq '. También agregué una clave F3 para guardar y hacer agregando a vimrc: 'map : w ' – Jason

4
au BufWritePost  *.c 
      \ make 
+0

Vale la pena señalar que esto va en ~/.vimrc. –

+1

@Pablo - En realidad, entra en '~/.vim/filetype.vim'. – amphetamachine

0

Esta es una vieja pregunta, pero creo que debo compartir esto. Aquí va mi receta, funciona bastante bien:

let autocompiled_filetypes = [ 
     \ 'php' ] " 'ft2', 'ft3', 'etc' 
    au BufWritePost * call feedkeys("\<Esc>") 
     \ | if index(autocompiled_filetypes, &ft) >= 0 | 
     \ | silent! make % | cw | call feedkeys("\<Enter>") 
     \ | endif