Vim:结合 autocmd?

发布于 2024-08-02 18:03:47 字数 316 浏览 4 评论 0原文

我需要在 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

悲歌长辞 2024-08-09 18:03:48

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

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

,请参阅`:h autocmd-buflocal。

I have a correction to @Eevee answer: to make autocommand work for one buffer only, you should use

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

, see `:h autocmd-buflocal.

时常饿 2024-08-09 18:03:48

InsertLeave 仍然需要一个参数。

这对我有用:

autocmd FileType tex :autocmd InsertLeave * :w

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

InsertLeave still needs a parameter.

This works for me:

autocmd FileType tex :autocmd InsertLeave * :w

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.

泅渡 2024-08-09 18:03:48

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

autocmd InsertLeave *.tex w

You can use the pattern option of the autocmnd.

autocmd InsertLeave *.tex w
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文