如何在Vim中修复Ctrl +箭头?


26

我正在使用Putty -> Suse box -> vim 7.2组合键进行编辑,并想将Ctrl +箭头组合键重新映射到特定任务。但是由于某种原因,Vim会忽略快捷方式,而是进入插入模式,并插入字符“ D”(左)和“ C”(右)。

应该归咎于键盘/终端配置的哪一部分以及如何解决?


PuTTY不会发送与控制箭头不同的有用序列。建议的答案均不正确(或无用)。
托马斯·迪基

Answers:


27

Ctrl通过在插入模式下键入Ctrl+ VCtrl+ arrow 来准确确定终端为+ arrow 发送的转义序列:这将字面插入前导ESC字符(如^[vim中所示),然后是其余的转义序列。然后用类似的东西告诉vim这些转义序列

map <ESC>[5D <C-Left>
map <ESC>[5C <C-Right>
map! <ESC>[5D <C-Left>
map! <ESC>[5C <C-Right>

我似乎还记得,Putty的应用程序光标键模式的默认设置很不方便(我忘记了为什么),您可能要先切换此设置。

请注意,尽管终端之间的转义序列有所不同,但是冲突(即,对应于不同终端中不同键的转义序列)很少见,因此无需特别尝试仅将映射应用于特定终端类型。


我如何知道发送了什么转义序列?
亚历克斯·B

@Alex:我试图澄清我的解释,如果您仍然不理解我的第一句话,请投诉。
吉尔斯(Gilles)“所以

您也可以运行,od -a或者od -c如果您挖掘八进制数,然后键入有问题的键。有关示例,请参见我的答案中的“添加”。
msw 2010年

很抱歉这么晚才回到这个问题,但是我发现即使我完全关闭了PuTTY,它仍然会向终端发送应用程序光标键。我不知所措,我还需要调整什么才能使它消失。
Alex B

@Alex:您不需要将它淘汰,可以将它们告诉您的应用程序(我发现这是阻力最小的路径)。或者,您也可以使用Mintty加上Cygwin ssh等替代方法之一代替PuTTY(但这对于本网站来说已成为话题)。
吉尔(Gilles)“所以,别再邪恶了”,

7

最好的选择可能是查看PuTTY的“ 应用程序光标键”模式配置。

默认序列ESC作为前缀发送,[后跟Append或Change或其他使您进入插入模式的东西。

跟随吉尔斯

使用od(1)可以看到^ V转义的更明确的版本。这是我在终端输入^ Up,^ Down,^ Right,^ Left:

$ od -a
0000000 esc   [   1   ;   5   A esc   [   1   ;   5   B esc   [   1   ;
0000020   5   C esc   [   1   ;   5   D

所以^[[1;5A当我按下Ctrl+ 时我的终端会发送


关闭“应用程序光标键”模式似乎无济于事。
亚历克斯·B


0

对于我的这个和其他Vim键盘问题,我只是做

vim ~/.vimrc
set nocompatible
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.