Vim:结合autocmd?

时间:2009-08-21 17:14:46

标签: vim autocmd

我需要在vim中执行逻辑和两个autocmd事件。基本上,当FileType为tex时,该命令必须在InsertLeave上运行。看起来这应该有效(在.vimrc中):

autocmd FileType tex :autocmd InsertLeave :w

但事实并非如此。嵌套选项似乎也没有帮助,即使手册指出它应该。

很容易做出符合逻辑的OR:

autocmd BufEnter,BufLeave ...

进行逻辑AND并不是太难。

3 个答案:

答案 0 :(得分:8)

我对@Eevee的答案进行了修正:要使自动命令仅适用于一个缓冲区,您应该使用

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

,参见`:h autocmd-buflocal。

答案 1 :(得分:4)

InsertLeave仍然需要一个参数。

这对我有用:

autocmd FileType tex :autocmd InsertLeave * :w

请注意,如果稍后在同一缓冲区中编辑非tex文件,则此行为将保留。我不确定在编辑任何但是某种类型的文件时是否有一种简单的方法可以删除它。

答案 2 :(得分:4)

您可以使用autocmnd的模式选项。

autocmd InsertLeave *.tex w