bindkey vi-cmd-mode 导致退出命令模式后其他绑定无法识别

bindkey vi-cmd-mode causes other bindings to be unrecognized after exiting command mode

我在 zsh,并且已经 bindkey -v 在 zsh 中使用 vi 键映射。我经常使用 <C-W> 删除前一个单词,但是当我输入 <esc> 时进入正常 mode/vi-cmd-mode,然后使用 ia 返回插入模式,在我 运行 一个新命令之前,我不能再使用像 <C-W> 这样的绑定。无论如何,在进入正常模式然后回到插入模式后,我仍然可以使用来自 bindkey 的绑定吗?谢谢!

这是bindkey的输出:

"^A"-"^C" self-insert
"^D" list-choices
"^E" "^[a ^[dbxxa"
"^F" self-insert
"^G" list-expand
"^H" vi-backward-delete-char
"^I" expand-or-complete
"^J" accept-line
"^K" self-insert
"^L" clear-screen
"^M" accept-line
"^N"-"^P" self-insert
"^Q" vi-quoted-insert
"^R" redisplay
"^S"-"^T" self-insert
"^U" vi-kill-line
"^V" vi-quoted-insert
"^W" vi-backward-kill-word
"^X"-"^Z" self-insert
"^[" vi-cmd-mode
"^[OA" up-line-or-search
"^[OB" down-line-or-search
"^[OC" vi-forward-char
"^[OD" vi-backward-char
"^[[A" up-line-or-history
"^[[B" down-line-or-history
"^[[C" vi-forward-char
"^[[D" vi-backward-char
"^\\"-"~" self-insert
"^?" vi-backward-delete-char
"\M-^@"-"\M-^?" self-insert

小部件vi-backward-kill-word(默认绑定到Control+W in vi- ins mode) 仅删除备份到您上次进入插入模式的位置。因此,当您实际上没有输入更多文本时,它似乎不起作用。

一个简单的解决方法是改用小部件 backward-kill-word。您可以重新映射 Control+W 的键绑定(这需要在 bindkey -v 之后完成):

bindkey -v
bindkey '^W' backward-kill-word