zshのキーバインドで余っているキーを探す

初めに

zsh最強シェル入門を買ってから、zshのカスタマイズにはまっています。今日はコマンドライン編集のキーバインドをいい感じにしようとしていました。

で、色々やってたけど、キーがぜんぜん足りません。 何か使いやすいキーに割り当てようとしても、たいていのキーはデフォルトで使われています。そこで、「何にも割り当てがないし、押しやすいキー」(いい子)と「押しやすいくせにほとんど使っていないキー」(わるい子)を探すことにしました。

デフォルト設定を調べる

使いやすいキーバインドと言えば、「Ctrl+なんちゃら」。ということで、デフォルトのキーバインドのうちC-*という形式のやつを調べました。

% bindkey -d    # デフォルト設定に戻す
% bindkey -e    # emacsモードを使う
% bindkey       # 今設定されているすべてのキーバインドを表示する
"^@" set-mark-command
"^A" beginning-of-line
"^B" backward-char
# ... たくさん出てきてビックリする
% bindkey | grep '"\^."'   # C-* という形式の設定だけを表示する

ふむふむ。やっぱり、あんまり使ってないキーがある。大事なやつといらないやつを(僕なりに)分けました。

超大事

無いと死ぬ、というやつです。

"^A" beginning-of-line
"^B" backward-char
"^E" end-of-line
"^F" forward-char
"^G" send-break
"^H" backward-delete-char
"^I" expand-or-complete
"^L" clear-screen
"^M" accept-line
"^N" down-line-or-history
"^P" up-line-or-history
"^R" history-incremental-search-backward
"^U" kill-whole-line
"^W" backward-kill-word

"^G"はあんまり使わないけど、無くすとキャンセルできなくなるので大事です。"^M"はreturnキーの入力と同じなので、やっぱり大事です。

まあまあ大事

それなりに使うやつです。

"^D" delete-char-or-list
"^K" kill-line
"^X" # 単体では使わない。^X^K みたいな感じで使う。
あんまりいらない

この辺になると潰しても別に困りません。

"^J" accept-line
"^Y" yank
"^Q" push-line
"^V" quoted-insert
"^_" undo
全然いらない

いらない子です。

"^@" set-mark-command
"^O" accept-line-and-down-history
"^S" history-incremental-search-forward
"^T" transpose-chars
"^?" backward-delete-char
デフォルト割り当てなし

割り当てなしのキーです。

"^C"
"^Z"
"^\"
"^^"
"^]"

このうち"^C", "^Z", "^\"は大事なので、そのまま残しておきます。他は勝手に使ってOKです。

まとめ

結局、「いらない機能、または割り当て無し」かつ「それなりに押しやすい」キーは以下になりました。

"^J" accept-line
"^V" quoted-insert
"^Y" yank
"^@" set-mark-command
"^O" accept-line-and-down-history
"^S" history-incremental-search-forward
"^^"
"^]"

今後はこいつらを有効に活用することにします。ちなみに"^T"もいらない子なんですが、もうすでにscreenで使っています。残念。