2010-09-17 28 views
11

Chcę wywołać polecenie po zapisaniu pliku. Teraz wywołuję to ręcznie przez :make, ale żałuję, że nie można go było wywołać, gdy wykonuję :w i :wq.Vim zapisać, a następnie zrobić automatycznie?

Chcę również włączyć tę funkcję w dowolnym podfolderze, który nie zawiera pliku Makefile, ale jego rodzice zawierają jeden. Podobnie jak ten temat powiedział, ale to nie działa dla mnie:

How to efficiently "make" with Vim

+0

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

Odpowiedz

12
 
:autocmd BufWritePost <buffer> make 
+0

„make” jest jako komenda powłoki lub Polecenie vim? czy może to być funkcja vim? –

+0

': make' to polecenie vim, które uruchamia polecenie powłoki' make' i odczytuje jego wyjście, aby upewnić się, że wszystko działa. –

+0

Jeśli chcesz oszczędzać czasami bez autokomendy, kontynuuj z 'noautocmd'. np .: 'noautocmd wq'. Możesz zamapować klucz, aby zapisać i zamknąć, na przykład F4, edytując vimrc za pomocą 'vim ~/.vimrc', a następnie dodaj linię:' map : noautocmd wq '. Dodałem również klawisz F3, aby zapisać i zrobić, dodając do vimrc: 'map : w ' – Jason

4
au BufWritePost  *.c 
      \ make 
+0

Warto zauważyć, że to idzie w ~/.vimrc. –

+1

@Pablo - Właściwie chodzi o '~/.vim/filetype.vim'. – amphetamachine

0

To stara sprawa, ale myślę, że powinienem podzielić się tym. Tu idzie mój przepis, działa całkiem dobrze:

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 
Powiązane problemy