如何知道在VIM中执行特定操作时将触发哪些事件?
我正在研究VIM事件,但我发现有些事件可能无法正常工作,如使用如何知道在VIM中执行特定操作时将触发哪些事件?,vim,Vim,我正在研究VIM事件,但我发现有些事件可能无法正常工作,如使用gt/gt在选项卡页面之间切换时不会触发#TabLeave。当我在执行特定操作时,如键入tabmove命令来执行该操作,如何知道VIM触发了什么事件?我正在编写一个插件,使我的VIM tabpage可以返回到以前访问过的tabpage,但问题是tabmove命令不会触发任何东西,有人能帮我吗 function! catchSomeEventTriggerByTabmCmd() let histCmd = histget('cmd',
gt/gt
在选项卡页面之间切换时不会触发#TabLeave
。当我在执行特定操作时,如键入tabmove
命令来执行该操作,如何知道VIM触发了什么事件?我正在编写一个插件,使我的VIM tabpage可以返回到以前访问过的tabpage,但问题是tabmove
命令不会触发任何东西,有人能帮我吗
function! catchSomeEventTriggerByTabmCmd()
let histCmd = histget('cmd', -1)
if match(histCmd, '^tabm') == 0
DoUpdateJumpQueue()
endif
endfunction
。。。我发现有些事件可能无法正常工作,例如使用“gt/gt”在选项卡页面之间切换时不会触发##TabLeave
gt
/gt
会触发TabLeave
。例如:
:let g:foo = 1
:autocmd TabLeave * let g:foo = g:foo + 1 | echom "TabLeave Event " . g:foo
:tabnew
现在做一些gt
/gt
。你应该得到消息
当我在执行特定操作时,比如键入“tabmove”命令来执行它,我该怎么做才能知道VIM触发了什么事件?我正在编写一个插件,使我的VIM tabpage可以返回到以前访问过的tabpage,但问题是'tabmove'命令不会触发任何东西,有人可以帮我吗
function! catchSomeEventTriggerByTabmCmd()
let histCmd = histget('cmd', -1)
if match(histCmd, '^tabm') == 0
DoUpdateJumpQueue()
endif
endfunction
我不确定您是否可以使用类似于TabLeave
的事件/自动cmd从:tabmove
捕获任何内容。由于:tabmove
会修改标签页码,因此使用标签页码可能也会很棘手
幸运的是,Vim总是需要关注一个窗口,因此,与其尝试创建选项卡页面的历史记录,不如创建一个具有窗口id的历史记录。您可以使用win\u getid()
和win\u gotoid()
来完成您的历史记录行为
有关更多帮助,请参阅:
:h win_getid()
:h win_gotoid()
:h windowid
嗨,马特,谢谢分享这个链接,这帮了大忙!嗨,彼得,衷心感谢你的回答,是的,我错了,gt/gt确实触发了活动#TabLeave。我已经找到了一种跟踪tabmove命令的方法,即使它没有触发任何与tabpage相关的事件。我的方法是在#TabEnter事件发生时,通过预定义函数tabpagenr()存储TabPageNumber,然后在#TabLeave事件发生时将其与TabPageNumber进行比较,因为在切换tabpages时,这两个数字应始终保持不变,但如果两者之间有tabmove命令,则不会。所以基本上,根据这一点,我们就可以知道了。无论如何谢谢你!