我需要在 vim 中执行两个 autocmd 事件的逻辑与。基本上,当 FileType 为 tex 时,该命令必须在 InsertLeave 上运行。看起来这应该有效(在.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
在同一缓冲区中编辑非文件,此行为将保持不变。我不确定在编辑除某种类型的文件之外的任何内容时是否有一种简单的方法可以将其删除。
您可以使用 autocmd 的模式选项。
autocmd InsertLeave *.tex w