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

Ale*_*x B 32 linux vim keyboard putty

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

应该归咎于我的键盘/终端配置的哪一部分以及如何修复它?

Gil*_*il' 32

Ctrl通过在插入模式下键入Ctrl+ V, Ctrl+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>
Run Code Online (Sandbox Code Playgroud)

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

请注意,尽管转义序列因终端而异,但冲突(即,与不同终端中不同键对应的转义序列)很少见,因此没有特别需要尝试仅在特定终端类型上应用映射。


msw*_*msw 7

最好的办法可能是查看 PuTTY 的Application Cursor Keys 模式配置。

默认序列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
Run Code Online (Sandbox Code Playgroud)

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