phu*_*ehe 3 vim terminal readline
我正在使用 Vim/etc/zsh/zshrc
添加键绑定,zsh
因为它不适用于inputrc
. 在我带有 tmux 的终端中,当我输入Ctrl+v然后Ctrl+LeftArrow外壳将显示^[OD
. 但是,当我处于 Vim 插入模式时,按相同的顺序将导致^[[D
.
我发现^[[D
当我输入Ctrl+ vthen时,shell 会产生这样的结果LeftArrow。我也在文件中更改^[[D
为并且它按预期工作(按+会使光标向后移动一个字)。这是我正在谈论的线路:^[OD
/etc/zsh/zshrc
CtrlLeftArrow
bindkey "^[OD" backward-word
Run Code Online (Sandbox Code Playgroud)
我猜 Vim 有问题,因为它消耗了Ctrl. 我该如何解决?
这实际上是你的终端在做一些奇怪的事情,而不是 Vim。由于历史原因,终端有两组与光标键相关的控制序列:一组用于全屏应用程序,通常称为“应用程序光标键模式”,另一组用于读取-评估-打印应用程序(例如 shell)。
在过去,read-eval-print 应用程序没有任何行编辑功能,其目的是使终端或操作系统终端驱动程序最终变得更加复杂。所以终端发送了用于终端驱动程序的控制序列。不知何故,Unix 终端驱动程序从未获得过像样的行编辑功能;这些被添加到应用程序中(例如通过 readline 库)。
的终端发送?OD
用于Ctrl+Left在行编辑光标键模式,并且?[D
在应用光标键模式。您有两个选择: