web-dev-qa-db-ja.com

一部のZLEシーケンスが「自己挿入」に再マッピングされるのはなぜですか?

最近、ドットファイルをいじくり回していて、ある時点で、頻繁に使用するデフォルトの^Aおよび^Kキーマッピングを使用できなくなりました。

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

しかし、zshzleのマニュアルページには、^K^Aがデフォルトでkill-lineasfにマップされていることが明記されています。 。

これが再マップされたはずの初期化ファイルのどこにも見つかりません!私は確かにそれをしませんでした:

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!

では、何が得られるのでしょうか?デフォルトのマッピングはどうなりますか?

2
shadowtalker

私はそれを考え出した!

zshzleのマニュアルページから:

これらの名前に加えて、「emacs」または「viins」のいずれかが「main」という名前にもリンクされています。シェルの起動時にVISUALまたはEDITOR環境変数の1つに文字列「vi」が含まれている場合は「viins」になり、そうでない場合は「emacs」になります。 bindkeyの-eおよび-vオプションは、このデフォルトの選択をオーバーライドする便利な方法を提供します。

見よ、私は最近EDITORVISUALを "vim"に設定しました。この設定を削除すると、キーバインディングが元に戻ります(これらはEmacsのデフォルトだと思いますが、Macのバインディングにも馴染みがあります)。

1
shadowtalker