为什么在 zsh 中将 vim 导出为编辑器会禁用键盘快捷键?

为什么在 zsh 中将 vim 导出为编辑器会禁用键盘快捷键?

我的.zshrc看起来像这样:

export EDITOR="/usr/bin/vim"

现在,当我打开终端并输入键盘快捷键(例如ctrla转到行首)时,它不起作用。相反,字符串^A(或其他字符串,取决于我输入的快捷方式)被输入到终端:

emlai:~ % ^A

export从 my 中删除单词.zshrc可以使键盘快捷键正常工作:

EDITOR="/usr/bin/vim"

导出EDITOR为其他内容vim也可以使键盘快捷键起作用,例如:

export EDITOR="/usr/bin/nano"

为什么会出现这种情况?

我也对此进行了测试bash,并且键盘快捷键在所有情况下都可以正常工作。

答案1

zsh与大多数现代 shell 一样,可以在两种不同的键盘映射之间进行选择以进行命令行编辑:一种viemacs一种。在某些 shell(例如基于tcshreadline- 的 shell,如bash)中,该emacsshell 是默认的,并且可能是您期望的 shell。

使用 时zsh,默认情况下您会获得emacs模式,除非或包含(如果您是 // /$EDITOR用户$VISUALvi尽管vinvi和if是... ),假设您更喜欢该模式)。vimelvisvimacs$EDITOR/home/victor/bin/emacszshvi

要强制使用特定模式而不考虑 的值$EDITOR,请添加 tcsh-style:

bindkey -e # for emacs
bindkey -v # for vi

或 ksh 风格:

set -o emacs
set -o vi

给你的~/.zshrc.看

info -f zsh -n Keymaps

了解详情。

相关内容