Paul Biggar
Paul Biggar

Reputation: 28739

Vim: Combining autocmd?

I need to do the logical-and of two autocmd events in vim. Basically, the command has to run on an InsertLeave when the FileType is tex. It seems like this should work (in a .vimrc):

autocmd FileType tex :autocmd InsertLeave :w

But it doesn't. The nested option doesn't seem to help either, even though the manual indicates it should.

Its easy to do a logical-OR:

autocmd BufEnter,BufLeave ...

it mustn't be too hard to do a logical-AND.

Upvotes: 6

Views: 3800

Answers (3)

ZyX
ZyX

Reputation: 53614

I have a correction to @Eevee answer: to make autocommand work for one buffer only, you should use

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

, see `:h autocmd-buflocal.

Upvotes: 9

mb14
mb14

Reputation: 22596

You can use the pattern option of the autocmnd.

autocmd InsertLeave *.tex w

Upvotes: 4

Eevee
Eevee

Reputation: 48546

InsertLeave still needs a parameter.

This works for me:

autocmd FileType tex :autocmd InsertLeave * :w

Note that this behavior will remain if you later edit a non-tex file in the same buffer. I'm not sure if there's a simple way to remove it when editing anything but a certain type of file.

Upvotes: 4

Related Questions