![在 zsh(vi 模式)中按 esc 后如何返回“正常”编辑模式?](https://linux22.com/image/39254/%E5%9C%A8%20zsh%EF%BC%88vi%20%E6%A8%A1%E5%BC%8F%EF%BC%89%E4%B8%AD%E6%8C%89%20esc%20%E5%90%8E%E5%A6%82%E4%BD%95%E8%BF%94%E5%9B%9E%E2%80%9C%E6%AD%A3%E5%B8%B8%E2%80%9D%E7%BC%96%E8%BE%91%E6%A8%A1%E5%BC%8F%EF%BC%9F.png)
我正在使用zsh
中vi-mode
。
当我进入正常模式,ESC然后返回插入模式(例如使用i,a或s)时,行编辑器会“保护”字符前面的行部分,即我重新进入插入模式时所在的部分。
我通过重新绑定它来修复退格字符
bindkey "^?" backward-delete-char
但仍有其他类似的绑定^W
无法开箱即用(可能是因为它们绑定到vi-*
)。
如果我理解正确的话,这种行为是正常的vi
。
有没有一种方法可以让zle
行为变得像vim
而不必重新绑定这么多键?
答案1
AFAICT,唯一有问题的小部件是:
vi-backward-delete-char
vi-kill-line
vi-backward-kill-word
所以你可以做
zle -A kill-whole-line vi-kill-line
zle -A backward-kill-word vi-backward-kill-word
zle -A backward-delete-char vi-backward-delete-char