vim:将ctrl-0映射到ctrl-9?

时间:2011-01-18 20:24:41

标签: vim

为什么我不能通过任何* map命令(nmap,imap等)映射 Ctrl 0 Ctrl < kbd> 9 击键?事实上,它们中的一些,如 Ctrl 3 ,在X-Window级别绑定到^[。我如何让vim覆盖那些默认绑定?

即,如果我imap <C-3> fancystuffhere,在插入模式下键入 Ctrl 3 会使我进入正常模式,而不是插入'fancystuffhere'。

我在linux / X11上。

2 个答案:

答案 0 :(得分:21)

因为vim和gvim都使用字节队列而不是按键事件队列,所以从0x40(@)到0x5F(_)(包括0x41-0x5A(AZ)范围)的值具有相应的值控制字符(您可以通过从其值中减去0x40来获取其代码),此范围之上和之外的任何字符都不能与C-一起使用。这也是为什么C-S-字母数字键在gvim中不起作用的原因(功能键生成多于一个字节,因此<C-S-F1>可能有效)。将<C-3>替换为<ESC>由终端完成,您可以尝试在几乎任何gui应用程序中映射它,并看到<Esc>未映射..

答案 1 :(得分:2)

我在Windows上完成此操作的方法是使用Autohotkey并重新映射 CTRL + 1 CTRL + 2 等等 CTRL + F1 CTRL + F2 等。

我知道你在linux上,所以不适合你,但我想我会为其他感兴趣的人提起它