2014-10-31 80 views
0

有没有办法检测按钮是否被按下, Ctrl键。我搜索了一些有前途的帮助主题,但找不到答案。在Vim/Vimscript中检测按钮的向上/向下状态

原因是,一旦到达一个VimScript函数,我想停留在一个特定的循环,同时按住Ctrl键,一旦它被释放后退出。

+0

这是不可能的AFAIK:Ctrl键不被Vim识别为一个实际的键,所以它不能说它是否被按下。怎么解释你在做什么? – romainl 2014-10-31 06:49:26

回答

1

查询单个(修饰符)键的键状态只能在GVIM中使用,而不能在终端中使用(因为它只发送完整的完整键击)。由于Vim倾向于在仅限GUI的功能(cp。:help design-not)上保持一致,所以这是不可能的,也不会。

如果你真的渴望这个功能,你可以在本地代码中实现这个功能,通过DLL /共享库和libcall()加载到Vim中。但我建议您宁愿重新考虑您的方法;当然有不同的方式。

+0

为什么不会正常的''映射不起作用? – 2014-10-31 18:07:29

+0

我愿意替代。我希望能够像Alt-Tab或Ctrl-Tab功能一样在缓冲区或选项卡之间切换[链接](http://vimrcfu.com/snippet/103)。按下一次并释放切换到MRU缓冲区/选项卡,同时按住Ctrl按钮一次,进一步沿MRU历史记录进一步迁移。我尝试了很多方法来在缓冲区和选项卡之间导航,包括native和插件,但是Windows上的这种行为无处不在,非常实用,而且我习惯于这种方式。也许在一个ctrl-tab进入函数之后,留在一个循环中,直到下一个按键不是Tab?用什么来读下一个键? – traycerb 2014-10-31 18:28:50

+0

抱歉没有注意到我的编辑没有保存(5分钟窗口)。我已经有[脚本使用ctrl-tab](http://vimrcfu.com/snippet/103),但我想复制行为以深入到MRU的历史。很难超过ctrl-tab的行为(既立即切换到MRU,也会更深入),而不必注意按键状态。我想我有一个选择,保持循环,直到下一个按键不是选项卡。尽管只有标签被按下,但在MRU列表中更深入。读下一个按键的最佳方法是什么? – traycerb 2014-10-31 18:36:52

相关问题