在 ZSH 中设置新的键绑定会删除默认键绑定

在 ZSH 中设置新的键绑定会删除默认键绑定

我在我的末尾添加了以下代码.zshrc

export VISUAL=vim
autoload edit-command-line; zle -N edit-command-line
bindkey -M vicmd v edit-command-line

当我重新启动 shell 时,它工作正常,但之前的所有键绑定都停止工作。

我无法搜索历史记录(CTRL-R)并且我无法在命令行中移动(CTRL-A/E) 例如。

也许我把这些命令放在了错误的地方?

任何帮助,非常感谢!

答案1

当您设置VISUAL为包含 的字符串时vi,zsh 使用 Vi键位图( vicmd, viins, ...) 具有 Vi 风格的默认键绑定。否则,zsh 使用emacs具有 Emacs 样式默认键绑定的键盘映射。

如果您想在 shell 中使用 Emacs 风格的命令行编辑,但使用 Vim 作为您最喜欢的编辑器,请添加bindkey -e给你的.zshrc.

如果您想使用 Vi 风格的命令行编辑,但使用 Emacs 风格默认设置中的一些绑定,则必须自己定义这些绑定。^R在 Emacs 模式下运行history-incremental-search-backward未绑定在 Vi 模式下。 Vi 命令模式下搜索的默认键绑定/vi-history-search-backward?vi-history-search-forward。要移动到命令行的开头或结尾,您可以像往常一样使用0,^和。$

相关内容