2010-09-17 17 views
11

Ich möchte einen Befehl aufrufen, wenn ich die Datei speichere. Ich rufe es von :make jetzt manuell, aber ich wünschte, es könnte aufgerufen werden, wenn ich :w und :wq ausführen.Vim speichern dann automatisch machen?

Ich möchte auch diese Funktion in jedem Unterordner aktivieren, der kein Makefile enthält, aber seine Eltern enthält einen. Genau wie dieses Thema gesagt hat, aber es funktioniert für mich nicht:

How to efficiently "make" with Vim

+0

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

Antwort

12
 
:autocmd BufWritePost <buffer> make 
+0

die „make“ ist als Shell-Befehl oder ein vim Befehl? könnte es eine vim-funktion sein? –

+0

': make' ist ein vim-Befehl, der den Shell-Befehl' make' ausführt und seine Ausgabe liest, um sicherzustellen, dass alles funktioniert. –

+0

Wenn Sie manchmal ohne Autocommand speichern möchten, gehen Sie mit "noautocmd" vor. z.B .: 'noautocmd wq'. Sie können einen zu speichernden und zu schließenden Schlüssel zuordnen, z. B. F4, indem Sie vimrc mit 'vim ~/.vimrc' bearbeiten und dann Zeile hinzufügen:' map : noautocmd wq '. Ich fügte auch einen F3 Schlüssel hinzu, um zu speichern und durch das Hinzufügen zu vimrc zu machen: 'Karte : w ' – Jason

4
au BufWritePost  *.c 
      \ make 
+0

Es ist erwähnenswert, dass dies in ~/.vimrc geht. –

+1

@Pablo - Eigentlich geht es in '~/.vim/filetype.vim'. – amphetamachine

0

Dies ist eine alte Frage, aber ich glaube, ich sollte diese teilen. Hier geht mein Rezept, funktioniert recht gut:

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 
Verwandte Themen