Vim:结合 autocmd?
我需要在 vim 中对两个 autocmd 事件进行逻辑与。基本上,当 FileType 为 tex 时,该命令必须在 InsertLeave 上运行。看起来这应该可行(在 .vimrc 中):
autocmd FileType tex :autocmd InsertLeave :w
但事实并非如此。嵌套选项似乎也没有帮助,尽管手册表明它应该有帮助。
执行逻辑“或”很容易:
autocmd BufEnter,BufLeave ...
执行逻辑“与”一定不会太难。
I need to do the logical-and of two autocmd events in vim. Basically, the command has to run on an InsertLeave when the FileType is tex. It seems like this should work (in a .vimrc):
autocmd FileType tex :autocmd InsertLeave :w
But it doesn't. The nested option doesn't seem to help either, even though the manual indicates it should.
Its easy to do a logical-OR:
autocmd BufEnter,BufLeave ...
it mustn't be too hard to do a logical-AND.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我对 @Eevee 答案进行了更正:要使自动命令仅适用于一个缓冲区,您应该使用
,请参阅`:h autocmd-buflocal。
I have a correction to @Eevee answer: to make autocommand work for one buffer only, you should use
, see `:h autocmd-buflocal.
InsertLeave 仍然需要一个参数。
这对我有用:
请注意,如果您稍后在同一缓冲区中编辑非 tex 文件,此行为将保留。我不确定在编辑除某种类型的文件之外的任何内容时是否有一种简单的方法可以将其删除。
InsertLeave still needs a parameter.
This works for me:
Note that this behavior will remain if you later edit a non-
tex
file in the same buffer. I'm not sure if there's a simple way to remove it when editing anything but a certain type of file.您可以使用 autocmd 的模式选项。
You can use the pattern option of the autocmnd.