2009-08-21 7 views
6

Je dois faire le logique et de deux événements autocmd dans vim. Fondamentalement, la commande doit s'exécuter sur une InsertLeave lorsque le FileType est tex. Il semble que cela devrait fonctionner (dans un .vimrc):Vim: Combinaison d'autocmd?

autocmd FileType tex :autocmd InsertLeave :w 

Mais ce n'est pas le cas. L'option imbriquée ne semble pas aider non plus, même si le manuel l'indique.

Il est facile de faire une logique OU:

autocmd BufEnter,BufLeave ... 

il ne doit pas être trop difficile à faire une logique-ET. InsertLeave a toujours besoin d'un paramètre.

+0

Vous devriez prendre la solution de ZyX comme réponse, car elle résout le problème de tampon local d'Eevee. – Profpatsch

+0

Fait, mais je vous crois sur parole. Je semble me souvenir du problème des tampons locaux, mais je n'ai pas écrit de latex depuis des années, et je suis passé à emacs il y a 2 ans. –

Répondre

8

J'ai une correction réponse @Eevee: pour rendre le travail de autocommand pour un seul tampon, vous devez utiliser

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

, voir `: h autocmd-buflocal.

+0

C'est génial. Maintenant, je peux re-rendre les documents asciidoc sur le passage à mon navigateur. – Profpatsch

+1

Ouch. Problème: La deuxième autocommande additionnée * à chaque fois * que vous passez à un fichier tex. Après un court moment, vim commence à enregistrer beaucoup de fois de suite après avoir quitté le mode insertion. – Profpatsch

+1

@Profpatsch Corrigé. – ZyX

4

Cela fonctionne pour moi:

autocmd FileType tex :autocmd InsertLeave * :w 

Notez que ce comportement restera si vous modifiez ultérieurement un fichier non tex dans le même tampon. Je ne suis pas sûr s'il y a un moyen simple de l'enlever en éditant quoi que ce soit mais un certain type de fichier.

+0

En effet, fonctionne comme un charme. –

+0

Le colon n'est pas vraiment nécessaire. par exemple. 'au FileType go au VimLeave * système d'appel (" killall gocode ")' – Meow

4

Vous pouvez utiliser l'option de motif de l'autocmnd.

autocmd InsertLeave *.tex w 
+0

Cela ne fonctionne pas lorsque l'extension de fichier ne correspond pas au type de fichier ou n'existe pas. Cela se produit lorsque vous effectuez des opérations telles que la comparaison avec des fichiers de sauvegarde/temporaires, ou si l'emplacement du fichier détermine son type, par ex. fichiers de configuration système. – Walf