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


23

我的.zshrc样子是这样的:

export EDITOR="/usr/bin/vim"

现在,当我打开一个终端并输入键盘快捷键(如ctrla要转到该行的开头)时,它将不起作用。而是将字符串^A(或其他字符串,取决于我输入的快捷方式)输入到终端:

emlai:~ % ^A

export从我的单词中删除单词.zshrc会使键盘快捷键正常工作:

EDITOR="/usr/bin/vim"

导出EDITOR为其他东西,而不是vim使键盘快捷键也可以工作,例如:

export EDITOR="/usr/bin/nano"

为什么会这样?

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

Answers:


27

zsh像大多数现代外壳程序一样,可以在两种不同的键盘映射之间进行选择以进行命令行编辑:vi一个和emacs一个。在某些shell中(例如tcshreadline基于的shell ,例如bash),emacs它是默认的,可能是您期望的一种。

使用时zshemacs默认情况下会获得模式,除非$EDITOR$VISUAL包含vi(如果您是vi/ nvi/ vim/ elvis用户(尽管也是vimacs,如果$EDITOR是...),则假定您喜欢该模式)。/home/victor/bin/emacszshvi

要强制特定模式而不管的值$EDITOR,请添加:

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

或更便携的等价物:

set -o emacs
set -o vi

给你~/.zshrc。看到

info -f zsh -n Keymaps

有关详细信息。


有趣。有什么理由要bindkey用完set -o吗?
15'Apr

@zenith,可能不是。bindkey是tcsh方式和原始方式。如今,它们应该等效。
斯特凡Chazelas
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.