为什么我不能通过任何* map命令(nmap,imap等)映射 Ctrl 0 到 Ctrl < kbd> 9 击键?事实上,它们中的一些,如 Ctrl 3 ,在X-Window级别绑定到^[
。我如何让vim覆盖那些默认绑定?
即,如果我imap <C-3> fancystuffhere
,在插入模式下键入 Ctrl 3 会使我进入正常模式,而不是插入'fancystuffhere'。
我在linux / X11上。
答案 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上,所以不适合你,但我想我会为其他感兴趣的人提起它