Pergunta
Eu preciso fazer a lógica e de dois eventos autocmd no vim. Basicamente, o comando tem que correr em uma InsertLeave quando o FileType é tex. Parece que isso deve funcionar (em um Vimrc):
autocmd FileType tex :autocmd InsertLeave :w
Mas isso não acontece. A opção aninhada parece não ajuda qualquer um, mesmo que o manual indica que deveria.
É fácil fazer um OR lógico:
autocmd BufEnter,BufLeave ...
não deve ser muito difícil de fazer uma lógico-E.
Solução
Eu tenho uma correção a resposta @Eevee: para tornar o trabalho autocommand para um buffer de somente, você deve usar
augroup TexAutoWrite
autocmd FileType tex :autocmd! TexAutoWrite InsertLeave <buffer> :update
augroup END
, consulte `:. H autocmd-buflocal
Outras dicas
InsertLeave ainda precisa de um parâmetro.
Isso funciona para mim:
autocmd FileType tex :autocmd InsertLeave * :w
Note que este comportamento permanecerá se, posteriormente, editar um arquivo não-tex
no mesmo tampão. Eu não tenho certeza se há uma maneira simples de removê-lo ao editar qualquer coisa e um determinado tipo de arquivo.
Você pode usar a opção padrão da autocmnd.
autocmd InsertLeave *.tex w