我希望我的Vimscript通过读取预定义的寄存器或调用函数来知道是否要执行特定命令(tabmove)。
我已经搜索了我可以从google或vim文档中获得的所有信息。但是什么也没发现。
if current_command == 'tabmove*'
dowhat
endif
到目前为止,我仍然没有找到有效的方法,有人可以为Vim专家提供一些建议吗?
答案 0 :(得分:0)
在脚本中,autocmd是触发一个事件的最佳方法。
请检查Autocommands以获得有关autocmd的更多详细信息。如果要使用的操作太多,请阅读Autocommand Groups。
在定义您自己的事件之前,请检查vim中autocmd-events bulit的列表。
也许您应该尝试如何在标签页中定义CursorMoved ??
autocmd CursorMoved call fucntab()
func fucntab()
if (tabpage)
"do your work??
endfunc
答案 1 :(得分:0)
没有执行命令的钩子;因为该钩子本身执行命令,所以这可能很快导致无限递归,并且可能真的很慢。
如果要在交互使用 时挂钩某些命令(与插件或映射在Vimscript中执行),则可以使用自定义:command
覆盖命令。用户必须记住使用(以大写字母开头)版本,或者您可以通过命令行模式映射或类似cmdalias.vim - Create aliases for Vim commands的插件(我维护extended fork。)来强制使用此版本。 / p>
或者,您也可以通过:cmap <CR>
进入命令行并自己解析命令。
但是我认为您要寻找的不是通用的钩子,而是特定的触发器。对于大多数常见用途,您可以通过:autocmd
挂入相应的事件;有关整个列表,请参见:help autocommand-events
。特别是,有TabEnter
和TabLeave
。如果同时选择两者,则可以轻松确定“原始”和“目标”选项卡页面。