Вопрос
Мне нужно выполнить логическое «и» двух событий autocmd в vim.По сути, команда должна выполняться в InsertLeave, когда FileType имеет значение tex.Кажется, это должно работать (в .vimrc):
autocmd FileType tex :autocmd InsertLeave :w
Но это не так.Вложенная опция, похоже, тоже не помогает, хотя в руководстве указано, что это необходимо.
Легко сделать логическое ИЛИ:
autocmd BufEnter,BufLeave ...
сделать логическое «И» не должно быть слишком сложно.
Решение
У меня есть исправление к ответу @Eevee:чтобы автокоманда работала только для одного буфера, вам следует использовать
augroup TexAutoWrite
autocmd FileType tex :autocmd! TexAutoWrite InsertLeave <buffer> :update
augroup END
, см. `:h autocmd-buflocal.
Другие советы
InsertLeave все еще нуждается в параметре.
Это работает для меня:
autocmd FileType tex :autocmd InsertLeave * :w
Обратите внимание, что такое поведение сохранится, если вы позже отредактируете не-tex
файл в том же буфере.Я не уверен, есть ли простой способ удалить его при редактировании чего-либо. но определенный тип файла.
Вы можете использовать опцию шаблона autocmnd.
autocmd InsertLeave *.tex w