Вопрос

Мне нужно выполнить логическое «и» двух событий 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top