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.

Foi útil?

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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top