最近、ドットファイルをいじくり回していて、ある時点で、頻繁に使用するデフォルトの^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!
では、何が得られるのでしょうか?デフォルトのマッピングはどうなりますか?
私はそれを考え出した!
zshzle
のマニュアルページから:
これらの名前に加えて、「emacs」または「viins」のいずれかが「main」という名前にもリンクされています。シェルの起動時にVISUALまたはEDITOR環境変数の1つに文字列「vi」が含まれている場合は「viins」になり、そうでない場合は「emacs」になります。 bindkeyの-eおよび-vオプションは、このデフォルトの選択をオーバーライドする便利な方法を提供します。
見よ、私は最近EDITOR
とVISUAL
を "vim"に設定しました。この設定を削除すると、キーバインディングが元に戻ります(これらはEmacsのデフォルトだと思いますが、Macのバインディングにも馴染みがあります)。