我最近一直在修改我的点文件,在某些时候我失去了对我经常使用的默认值^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 选项提供了一种覆盖此默认选择的便捷方法。
你瞧,我最近设置了EDITOR
“ VISUAL
vim”。删除此设置可以恢复我的按键绑定(我猜这些是 Emacs 默认值,但它们也是熟悉的 Mac 绑定)。