[英]In Vim, when entering a new tab, how to ignore BufEnter event?
我有一些运行Vimscript函数的autocmds。 该函数绑定到TabEnter
以及BufEnter
。
但是,当有人进入新标签页时,该函数会运行几次,因为autocmds都将触发(并且TabEnter
似乎先使用先前的“当前”缓冲区触发BufEnter
,然后再使用新缓冲区再次触发它...我认为)。
无论如何,当有人进入新标签页时,如何运行我的函数一次?
您没有告诉我们何时需要确切触发您的功能; 也许您的事件组合( TabEnter
和BufEnter
有点不相关;如果两个标签中都显示了相同的缓冲区怎么办?),并且可以通过选择其他事件来解决问题。
除此之外,您还可以:
bufnr('')
)/窗口( winnr()
)/ ...存储在脚本局部变量中,如果相同则短路 localtime()
),并在时间过短时短路 :noautocmd
和:set eventigore+=...
可以解决这个问题 我通过以下方法解决了这个问题:
TabLocal
在TabEnter
上设置一个标签局部变量,然后处理新标签中的所有缓冲区 BufEnter
查找制表符局部变量; 如果存在,它将清除并且不执行其他任何操作; 如果不存在,它将处理缓冲区。 这是我的代码 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.