为什么某些 ZLE 序列被重新映射为“自插入”?

为什么某些 ZLE 序列被重新映射为“自插入”?

我最近一直在修改我的点文件,在某些时候我失去了对我经常使用的默认值^A和键盘映射的使用。^K

bindkey -L | grep '\^[AK] 
# bindkey -R "^A"-"^C" self-insert
# bindkey "^K" self-insert

但正如我所期望的那样, 的手册页明确zshzle指出^K^A默认情况下映射到kill-line和。asf

我在任何初始化文件中都找不到任何可以重新映射的地方!我当然没有这样做:

print /usr/local/ ~/.z^(compdump|sh_history) ~/dotfiles | xargs ag 'bindkey'
# /Users/vercingetorix/.zshrc
# 56:bindkey "^[[3~" delete-char
# 
# /Users/vercingetorix/dotfiles/zsh/zshrc
# 56:bindkey "^[[3~" delete-char

这就是我的全部!

事实上我知道我没有这样做:

zsh -x &> diagnose.log
exit
wc -l diagnose.log
#     3802 diagnose.log
[[ -z $(ag '\^[AK]' diagnose.log) ]] && print 'nothing!'
# nothing!
[[ -z $(ag 'bindkey -[evaM]' diagnose.log) ]] && print 'nothing!'
# nothing!

那么什么给出呢?默认映射发生了什么?

答案1

我想到了!

zshzle手册页:

除了这些名称之外,“emacs”或“viins”也与名称“main”相关联。如果 VISUAL 或 EDITOR 环境变量之一在 shell 启动时包含字符串“vi”,那么它将是“viins”,否则它将是“emacs”。 bindkey 的 -e 和 -v 选项提供了一种覆盖此默认选择的便捷方法。

你瞧,我最近设置了EDITORVISUALvim”。删除此设置可以恢复我的按键绑定(我猜这些是 Emacs 默认值,但它们也是熟悉的 Mac 绑定)。

相关内容