vi模式绑定删除键

Bind delete key in vi mode

我正在使用 oh-my-zsh 的 vi-mode 插件。在我的 .zshrc 中,我有

bindkey '^[[3~' delete-char

其中 ^[[3~ 是我的删除键的转义码。但是,这只适用于插入模式,而不能用于命令模式。当我输入

$ abcd

将光标移动到行首并在命令模式下点击del,我得到

$ ABCd

显然删除键的字符序列是按字面解释的。如何让delete键在命令模式下真正删除一个字符?

bindkey -a '^[[3~' delete-char

Zsh 有多种不同的键映射,默认情况下,bindkey 将绑定普通插入模式键映射中的键。使用 -M vicmd 选择命令模式键盘映射。 -a 是一个捷径。您可以使用 bindkey -l 列出键盘映射。你会看到还有 viopp 用于在像 c 或 d 这样的键之后移动。视觉选择模式也有 visual。

现在是 2020 年了,我不确定 @okapi 的回答是否过时或只是遗漏了一部分,但对我来说,我不得不使用:

bindkey -a '^[[3~' vi-delete-char

不带 vi- 前缀的

delete-char 没有效果,但添加了它。