Vim 维姆<;C-S-Key>;映射

Vim 维姆<;C-S-Key>;映射,vim,mapping,Vim,Mapping,我和Cygwin/Mintty/Vim一起工作 使用我看到已编码。这意味着vim可以读取它,我可以使用map命令映射它 不幸的是,如果我尝试: :inoremap <C-S-c> foobar 其中F1是[1;5P和F9是[20;5~Vim显然不支持涉及控件()的外来键组合。这包括F1–尽管您尝试的其他映射ShiftC是受支持的(并且相当于仅使用C进行控件)。从上的帖子: 唯一可以可靠地与Ctrl一起使用的可打印键 在任何操作系统的烹调模式下,可预测的结果都是由 ASCII,这意

我和Cygwin/Mintty/Vim一起工作

使用
我看到
已编码
。这意味着vim可以读取它,我可以使用map命令映射它

不幸的是,如果我尝试:

 :inoremap <C-S-c> foobar

其中
F1
[1;5P
F9
[20;5~
Vim显然不支持涉及控件(
)的外来键组合。这包括F1–尽管您尝试的其他映射ShiftC是受支持的(并且相当于仅使用C进行控件)。从上的帖子:

唯一可以可靠地与Ctrl一起使用的可打印键 在任何操作系统的烹调模式下,可预测的结果都是由 ASCII,这意味着以下内容,而不是其他内容:

  • ASCII字符0x40到0x5F(即大写字母A到Z,加上六个字符 符号处的非阿尔法字符、左括号、斜杠、右括号、, [插入符号]和下划线),其中Ctrl减去0x40,从而映射它们 这解释了为什么Ctrl-[表示Esc,Ctrl-I 表示制表符,Ctrl-M表示输入,等等
  • 小写字母,其Ctrl对应项与 相应的大写字母(因此Ctrl+letter和Ctrl+Shift+letter是 对于给定的字母,始终相同)
  • 此外,Ctrl-?被映射到0x7F(DEL)
Vim可能会也可能不会看到其他Ctrl组合,但这取决于 终端,在大多数情况下,它不会看到它们,也不会将它们与 其他内容,例如不带Ctrl键的同一个键


至于你的
映射,我不太清楚为什么你可以看到
,但是你不能映射它,当我尝试
时,我得到了字符
^C
,并且
:inoremap foobar
起作用。当我在OS X的终端中测试时,终端会吞下按键和蜂鸣音,同时使用
:inoremap
。在这两种情况下,
的行为与的一致,因此我不知道您为什么会看到di准备。

由于键盘输入是在内部处理的,不幸的是,即使在GVIM中,今天通常也不可能做到这一点。一些组合键,如Ctrl+非字母键无法映射,Ctrl+字母与Ctrl+Shift+字母无法区分。(除非您的终端为其发送了一个不同的termcap代码,而大多数情况下没有)。在插入或命令行模式下,请尝试键入组合键。如果没有发生任何事情/插入,则无法使用该组合键。这也适用于
/
/
/
等。(唯一的例外是
/
)这是一个已知的痛点,也是关于vim_dev和#vim IRC通道的各种讨论的主题

一些人(最重要的是Paul LeoNerd Evans)希望解决这一问题(即使是支持这一点的终端中的console Vim),并提出了各种建议,cp


但是到今天为止,还没有任何补丁或志愿者出现,尽管许多人表示希望在未来的Vim 8主要版本中有此功能。

谢谢,但您似乎到处都给出了这个答案(您对三个不同的问题的回答完全相同).一些类似于
的地图在我的vim中非常有效…对了,我用这个标准答案说服vim的创建者Bram来解决这个常见的痛苦和困惑点。很抱歉“污染”你的问题;我希望你仍然能从中得到一些信息,即使这不是你问题的解决方案。如果是出于好的原因,我原谅你。我也问过布拉姆。也许我们最好等Neovim()
 :inoremap <C-S-F1> foobar
[20;5~[20;5~[20;5~[20;5~[20;5~[20;5~[20;5~[20;5~[20;5~[20;5~[20;5~[20;5~[20;5~[20;5~[20;5~[20;5~[20;5~[20;5~[20;5~[20;5~[20;5~[20;5~[20;5~[20;5~[20;5~[20;5~[20;5~[20;5~[20;5~[20;5~[20;5~