有没有一种方法可以在Vim中映射Ctrl+句号和Ctrl+逗号?

43

我似乎找不到在Vim中映射<control> period和<control> comma的方法。这是否可能?

4个回答

61

根据FAQ显示,看起来使用 <C-.><C-,> 键组合时会很不幸,因为这些键组合不在Vim可以检测到的可打印ASCII键和Ctrl键的列表中(Vim只能映射到可打印的ASCII键组合)。


5
谢谢提供信息!虽然不是我想听到的,但至少我现在知道无法做到,所以可以停止尝试弄清如何做到它了。 - double free

15
由于键盘输入的内部处理方式,即使在GVIM中,通常也无法实现这一点。某些键组合,如Ctrl+非字母无法映射,而Ctrl+字母Ctrl+Shift+字母无法区分(除非您的终端为其发送不同的termcap代码,但大多数终端都不会)。在插入或命令行模式下,尝试键入键组合。如果没有发生任何事情/被插入,则不能使用该键组合。这也适用于<Tab>/<C-I><CR>/<C-M>/<Esc>/<C-[>等(唯一的例外是<BS>/<C-H>)。这是一个已知的痛点,并且是vim_dev和#vim IRC频道上各种讨论的主题。

一些人(尤其是Paul LeoNerd Evans)希望解决这个问题(即使是在支持此功能的终端中的控制台Vim),并提出了各种各样的建议

但是,截至今天,尚未出现修补程序或志愿者,尽管许多人表达了希望在未来的Vim 8主要版本中实现此功能的愿望。


4

看起来@Prince Goulash是正确的,但我找到了一个满足我的需求的解决方案。我绕过这个限制的方法是在我的实际终端模拟器中创建绑定,它允许绑定如<C-,>这样的组合键(它会输出一个随机字符串,通常是3个数字后跟我想要绑定的字符,以便我不会意外按中),该组合键然后被绑定到我想要在vim中绑定的命令上。虽然不太便携,但效果非常好。


-1

不要对制作快捷方式如此悲观。还有其他选择。尝试在AutoHotKey中使用以下代码。[你只需要下载和安装AHK,然后将以下代码作为脚本运行即可。]

#IfWinActive ahk_class Vim
^+!left:: send :s/{^}/`%/g{Enter}{$}o{enter} ; This is for commenting in tex files. you may change `% to be other symbles. 
^,:: send ^ww
+^,:: send ^wW

希望这能对你的问题有所帮助。

._ . o_O T_T - airtonix

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接