是否可以配置Z shell的vi模式,以便退格键可以删除字符前插入操作开始的位置?
基本上 vim 的行为可以通过添加以下行来实现~/.vimrc
set backspace=start
– 是否可以在 Z shell vi 模式下使用此功能?
答案1
您可以将其添加到您的 zsh 配置中:
bindkey -M viins '^?' backward-delete-char
bindkey -M viins '^H' backward-delete-char
解释:
Vi模式只是一组预配置的键盘映射(维恩斯,维命令,维奥普,视觉的)将某些键绑定到某些小部件。其中一些小部件经过专门设计,其行为方式与六编辑器确实如此。
在您的情况下,这是vi-backward-delete-char
默认绑定到的小Backspace部件维恩斯模式,其特定功能是不删除进入插入模式的位置。
通常存在这些小部件略有不同的版本,其行为更符合emacs编辑。在这种情况下,它将是backward-delete-char
小部件,它不限于当前插入会话。虽然它默认绑定在emacs 模式,对于哪个小部件可以在哪种模式下使用没有硬性限制。您可以backward-delete-char
在以下范围内使用vi模式只需重新绑定Backspace即可调用小部件backward-delete-char
。
^?
存在两个绑定 -和-的原因^H
是它取决于终端,按下 时会发送这两个键序列中的哪一个Backspace。默认情况下,两者都绑定到同一个小部件vi模式也emacs 模式。