如何阻止 Ctrl+左/右箭头在 zsh 的 vi 模式下擦除符号?

如何阻止 Ctrl+左/右箭头在 zsh 的 vi 模式下擦除符号?

在 zsh 中使用 vi 模式时,使用 ctrl+箭头(向左或向右)尝试按单词导航(习惯的力量)会导致符号和整个单词被删除。如何配置 vi 模式来防止这种情况?

答案1

我最初只找到了 about bindkey -a,但它在插入模式下不起作用。我偶然发现zsh 高级绑定文档

要在插入模式下映射键,必须使用bindkey -M viins.要在命令模式下映射键,可以使用bindkey -M vicmdOR bindkey -a。正如文档所述,后者的可读性不是很好。剩下的就很简单了,Ctrl+左箭头的关键是'^[[1;5D',Ctrl+右箭头的关键是'^[[1;5C',好的映射分别是emacs-backward-wordemacs-forward-word。结果配置是:

# vi mode
bindkey -v

bindkey -M vicmd '^[[1;5C' emacs-forward-word
bindkey -M vicmd '^[[1;5D' emacs-backward-word
bindkey -M viins '^[[1;5C' emacs-forward-word
bindkey -M viins '^[[1;5D' emacs-backward-word

相关内容