2009-08-21 26 views
6

Ho bisogno di fare il logico e di due eventi autocmd in vim. Fondamentalmente, il comando deve essere eseguito su un InsertLeave quando FileType è tex. Sembra che questo dovrebbe funzionare (in un .vimrc):Vim: combinazione di autocmd?

autocmd FileType tex :autocmd InsertLeave :w 

Ma non è così. L'opzione nidificata non sembra aiutare neanche, anche se il manuale indica che dovrebbe.

La sua facile fare un logico-O:

autocmd BufEnter,BufLeave ... 

non deve essere troppo difficile da fare un logico-E.

+0

Si dovrebbe prendere la soluzione di ZyX come risposta, poiché risolve il problema del buffer locale di Eevee. – Profpatsch

+0

Fatto, ma ti sto prendendo in parola. Mi sembra di ricordare il problema dei buffer locali, ma non ho scritto il latex in anni e sono passato a emacs 2 anni fa. –

risposta

8

Ho una correzione al @Eevee risposta: per far funzionare autocomando per un solo tampone, è necessario utilizzare

augroup TexAutoWrite 
    autocmd FileType tex :autocmd! TexAutoWrite InsertLeave <buffer> :update 
augroup END 

, si veda `: h autocmd-buflocal.

+0

Questo è geniale. Ora posso eseguire nuovamente il rendering dei documenti asciidoc al passaggio al browser. – Profpatsch

+1

Ouch. Problema: il secondo autocomando aggiunto * ogni volta * si passa a un file tex. Dopo un breve periodo, vim inizia a salvare molte volte di seguito dopo aver lasciato la modalità di inserimento. – Profpatsch

+1

@Profpatsch corretto. – ZyX

4

InsertLeave ha ancora bisogno di un parametro.

questo funziona per me:

autocmd FileType tex :autocmd InsertLeave * :w 

Si noti che questo comportamento rimarrà se in seguito si modifica un file non tex nello stesso tampone. Non sono sicuro se c'è un modo semplice per rimuoverlo quando si modifica qualcosa ma un determinato tipo di file.

+0

In effetti, funziona come un fascino. –

+0

Il colon non è veramente necessario. per esempio. 'au FileType go au VimLeave * sistema di chiamata (" killall gocode ")' – Meow

4

È possibile utilizzare l'opzione di modello dell'autocomp.

autocmd InsertLeave *.tex w 
+0

Questo non funziona quando l'estensione del file non corrisponde al tipo di file o non esiste. Ciò accade quando si eseguono operazioni come il confronto con i file di backup/temporanei o se la posizione del file ne determina il tipo, ad es. file di configurazione del sistema. – Walf

Problemi correlati