我有一些运行Vimscript函数的autocmds。该函数绑定到TabEnter
和BufEnter
。
然而,当某人进入一个新选项卡时,该函数会多次运行,因为两个autocmds都会触发(而TabEnter
似乎用之前的"当前"缓冲区触发BufEnter
使用新的缓冲区再次触发......我想)。
无论如何,当有人进入新标签时,如何才能运行我的功能?
答案 0 :(得分:1)
您没有告诉我们何时需要触发您的功能;也许你的事件组合(TabEnter
和BufEnter
有点不相关;如果两个标签中显示相同的缓冲区怎么办?)关闭,可以通过选择其他事件来解决问题。
除此之外,你可以:
bufnr('')
)/窗口(winnr()
)/ ...存储在脚本本地变量中,如果相同则将其短路localtime()
)并在时间过短时短路:noautocmd
和:set eventigore+=...
可以解决此问题答案 1 :(得分:0)
我通过以下方式解决了这个问题:
TabLocal
在TabEnter
上设置一个tab-local变量,然后处理新标签中的所有缓冲区BufEnter
查找tab-local变量;如果存在,它会清除它,不做任何其他事情;如果不存在,它会处理缓冲区。这是my code。