【发布时间】:2011-11-07 07:29:55
【问题描述】:
我似乎找不到在 Vim 中映射 <control> period 和 <control> comma 的方法。有可能吗?
【问题讨论】:
标签: vim
我似乎找不到在 Vim 中映射 <control> period 和 <control> comma 的方法。有可能吗?
【问题讨论】:
标签: vim
根据the FAQ,您似乎对<C-.> 和<C-,> 不走运,因为此组合键不在Vim 可以检测到的Ctrl-printable-key 和弦列表中(Vim 只能映射到可打印的 ASCII 和弦)。
【讨论】:
由于键盘输入是在内部处理的,遗憾的是,即使在 GVIM 中,这在今天通常也是不可能的。某些组合键,如 Ctrl + non-alphabetic 无法映射,而 Ctrl + letter 与 Ctrl + Shift + 字母 无法区分。 (除非您的终端为它发送一个独特的 termcap 代码,但大多数情况下不会。)在插入或命令行模式下,尝试键入组合键。如果没有任何反应/插入,则不能使用该组合键。这也适用于<Tab>/<C-I>、<CR>/<C-M>/<Esc>/<C-[> 等(唯一的例外是<BS>/<C-H>。)这是一个已知的痛点,并且vim_dev 和#vim IRC 频道上各种讨论的主题。
有些人(最重要的是 Paul LeoNerd Evans)想要解决这个问题(即使是支持此功能的终端中的控制台 Vim 也是如此),并提出了 various proposals。
但截至今天,还没有补丁或志愿者出现,尽管许多人表示希望在未来的 Vim 8 主要版本中提供此功能。
【讨论】:
@Prince Goulash 似乎是正确的,但我找到了一个满足我需求的解决方案。我如何解决这个限制是通过在我的实际终端模拟器中创建绑定,它允许诸如<C-,> 之类的绑定,它输出一个随机字符串(所以我不会意外命中它,通常是 3 个 nums 后跟我想要绑定的字符使用 ctrl) 然后绑定到我希望它在 vim 中绑定的命令。不那么便携,但它就像一个魅力。
【讨论】:
不要对做捷径这么悲观。有外部选择。在 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
希望这对您的问题有所帮助。
【讨论】: