Vim: Объединение autocmd? - PullRequest
       10

Vim: Объединение autocmd?

6 голосов
/ 21 августа 2009

Мне нужно выполнить логические и два события autocmd в vim. По сути, команда должна выполняться в InsertLeave, когда FileType имеет значение tex. Кажется, что это должно работать (в .vimrc):

autocmd FileType tex :autocmd InsertLeave :w

Но это не так. Вложенная опция, похоже, тоже не помогает, хотя руководство указывает, что она должна.

Легко сделать логическое ИЛИ:

autocmd BufEnter,BufLeave ...

не должно быть слишком сложно выполнить логическое И.

Ответы [ 3 ]

8 голосов
/ 10 марта 2011

У меня есть исправление ответа @Eevee: чтобы автокоманда работала только для одного буфера, вы должны использовать

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

, см. `: H autocmd-buflocal.

4 голосов
/ 10 марта 2011

Вы можете использовать опцию шаблона autocmnd.

autocmd InsertLeave *.tex w
4 голосов
/ 21 августа 2009

InsertLeave все еще нуждается в параметре.

Это работает для меня:

autocmd FileType tex :autocmd InsertLeave * :w

Обратите внимание, что это поведение сохранится, если позже вы отредактируете файл не-tex в том же буфере. Я не уверен, существует ли простой способ удалить его при редактировании чего-либо , но определенного типа файла.

...