今回は、bashのショートカットキーをzshに対応させたもののうち、前回取り上げきれなかったものをまとめておく。bashとzshでは全ての機能が1対1で対応しているわけではないので、いくつかの機能はzshでは使うことができない。本連載ではbashをベースにまとめているので、まずはbashベースでショートカットキーをまとめておこう。
bashのショートカットキー設定をzshで実現する(その2)
bashに対応させたzshの残りの設定は次の通りだ。
キー | 操作 |
---|---|
「↑」 | コマンド履歴から1つ前のコマンドを表示(古いほうへ) |
「↓」 | コマンド履歴からひとつ後のコマンドを表示(新しいほうへ) |
「Ctrl」+「r」 | インクリメンタルコマンド履歴検索(古いほうへ) |
「Ctrl」+「s」 | インクリメンタルコマンド履歴検索(新しいほうへ) |
キー | 操作 |
---|---|
キー | 操作 |
「Tab」 | 補完 |
キー | 操作 |
---|---|
該当なし | キーボードマクロの記録を開始 |
該当なし | キーボードマクロの記録を終了 |
該当なし | キーボードマクロを実行 |
キー | 操作 |
---|---|
「Ctrl」+「_」 | アンドゥ |
「Ctrl」+「l」 | スクリーンクリア |
キー | 操作 |
---|---|
「Ctrl」+「v」 | 文字をそのまま入力する |
「Ctrl」+「q」 | 文字をそのまま入力する |
「文字をそのまま入力」を実現するために~/.zshrcに追加する設定
bindkey '^Q' quoted-insert # Ctrl-q
キーボードマクロに関しては対応する機能が存在していないが、ほかはほとんど同じだ。
アンドゥと「Ctrl」+「Z」
Windowsだとアンドゥは「Ctrl」+「Z」に割り当てられていることが多い。Macなら「⌘」+「Z」だ。なぜ「Z」に割り当てられているかだが、1970年代に設計されたエディタで使われていたアンドゥのショートカットキー設定が現在に広がった結果だと考えられている。
そのエディタでは「Z」「X」「C」「V」に「アンドゥ」「切り取り」「コピー」「貼り付け」の機能が割り当てられたそうだ。現在でもおなじみのショートカットキーだが、当時このキーに割り当てられた理由は「Ctrl」キーから近くて押しやすいからだと言われている。現在ではこの組み合わせのショートカットキーが広く使われており、デファクトスタンダートと言ってよいだろう。
一方、UNIX系OSのターミナルでは、「Ctrl」+「Z」が実行中のプロセスを一時停止するショートカットキーとして使われることが多い。bashでもzshでもアンドゥは「Ctrl」+「_」に割り当てられているが、それはすでに「Ctrl」+「Z」が使われているからだ。
では、なぜプロセスの一時停止が「Ctrl」+「Z」に割り当てられているかだが、こちらは想像力しやすい。英語圏では眠っていることを示す文字列として「zzzz」「zzZZ」「ZZzz」といった文字が使われる。これはいびきや寝息を表したものだ(日本だと寝息は「ぐーぐー」という擬音語が使われることが多い)。このため、「プロセスを停止させる→プロセスを眠らせる」という連想から「Ctrl」+「Z」でプロセスの停止というわけだ。
もちろん設定を変更すれば「Ctrl」+「Z」をアンドゥに割り当てることもできる。Windowsアプリケーションを使うことが多ければ、ターミナルやシェルの設定を変更するのもありだろう。
付録 Windows Terminal キーとキー表記
キー | キー表記 |
---|---|
「ESC」 | ^[ |
「ESC」「ESC」 | ^[^[ |
「Home」 | ^[[H |
「Insert」 | ^[[2~ |
「Delete」 | ^[[3~ |
「End」 | ^[[F |
「Page Up」 | ^[[5~ |
「Page Down」 | ^[[6~ |
「F1」 | ^[OP |
「F2」 | ^[OQ |
「F3」 | ^[OR |
「F4」 | ^[OS |
「F5」 | ^[O15~ |
「F6」 | ^[O17~ |
「F7」 | ^[O18~ |
「F8」 | ^[O19~ |
「F9」 | ^[O20~ |
「F10」 | ^[O21~ |
「Alt」+「Home」 | ^[[1;3H |
「Alt」+「Insert」 | ^[[2;3~ |
「Alt」+「Delete」 | ^[[3;3~ |
「Alt」+「End」 | ^[[1;3F |
「Alt」+「Page Up」 | ^[[5;3~ |
「Alt」+「Page Down」 | ^[[6;3~ |
「Ctrl」+「Home」 | ^[[1;5H |
「Ctrl」+「Insert」 | ^[[2;5~ |
「Ctrl」+「Delete」 | ^[[3;5~ |
「Ctrl」+「End」 | ^[[1;5F |
「Ctrl」+「Page Up」 | ^[[5;5~ |
「Ctrl」+「Page Down」 | ^[[6;5~ |
「↑」 | ^[[A |
「↓」 | ^[[B |
「→」 | ^[[C |
「←」 | ^[[D |
「Alt」+「↑」 | ^[[1;3A |
「Alt」+「↓」 | ^[[1;3B |
「Alt」+「→」 | ^[[1;3C |
「Alt」+「←」 | ^[[1;3D |
「Ctrl」+「↑」 | ^[[1;5A |
「Ctrl」+「↓」 | ^[[1;5B |
「Ctrl」+「→」 | ^[[1;5C |
「Ctrl」+「←」 | ^[[1;5D |
貼り付け開始 | ^[[200~ |
クエリステータスレポート | ^[[5n |
クエリステータスレポート(応答) | ^[[0n |
「Backspace」 | ^? |
「Ctrl」+「Backspace」 | ^H |
「Tab」 | ^I |
「Enter」 | ^M |
付録 Mac Terminal キーとキー表記
キー | キー表記 |
---|---|
「ESC」 | ^[ |
「ESC」「ESC」 | ^[^[ |
「Home」 | なし |
「Insert」 | なし |
「Delete」 | ^[[3~ |
「End」 | なし |
「Page Up」 | なし |
「Page Down」 | なし |
「F1」 | ^[OP |
「F2」 | ^[OQ |
「F3」 | ^[OR |
「F4」 | ^[OS |
「F5」 | ^[O15~ |
「F6」 | ^[O17~ |
「F7」 | ^[O18~ |
「F8」 | ^[O19~ |
「F9」 | ^[O20~ |
「F10」 | なし |
「F11」 | ^[O23~ |
「F12」 | ^[O24~ |
「Alt」+「Home」 | なし |
「Alt」+「Insert」 | なし |
「Alt」+「Delete」 | なし |
「Alt」+「End」 | なし |
「Alt」+「Page Up」 | なし |
「Alt」+「Page Down」 | なし |
「Ctrl」+「Home」 | なし |
「Ctrl」+「Insert」 | なし |
「Ctrl」+「Delete」 | ^[[3;5~ |
「Ctrl」+「End」 | なし |
「Ctrl」+「Page Up」 | なし |
「Ctrl」+「Page Down」 | なし |
「↑」 | ^[[A |
「↓」 | ^[[B |
「→」 | ^[[C |
「←」 | ^[[D |
「Alt」+「↑」 | なし |
「Alt」+「↓」 | なし |
「Alt」+「→」 | なし |
「Alt」+「←」 | なし |
「Ctrl」+「↑」 | ^[[A |
「Ctrl」+「↓」 | ^[[B |
「Ctrl」+「→」 | ^[[1;5C |
「Ctrl」+「←」 | ^[[1;5D |
貼り付け開始 | ^[[200~ |
クエリステータスレポート | ^[[5n |
クエリステータスレポート(応答) | ^[[0n |
「Backspace」 | ^H |
「Ctrl」+「Backspace」 | ^H |
「Tab」 | ^I |
「Enter」 | ^M |
付録 zsh bindkey 出力キー対応表
キー表記 | キー | zshzle標準ウィジェット | |
---|---|---|---|
^[a | 「ESC」「a」 | accept-and-hold | |
^[A | 「ESC」「A」 | accept-and-hold | |
^J | 「Ctrl」+「J」 | accept-line | |
^M | 「Ctrl」+「M」 | accept-line | |
^O | 「Ctrl」+「O」 | accept-line-and-down-history | |
^[[D | 「←」 | backward-char | |
^[OD | 「ESC」「O」「D」 | backward-char | |
^B | 「Ctrl」+「B」 | backward-char | |
^? | 「Backspace」 | backward-delete-char | |
^H | 「Ctrl」+「H」 | backward-delete-char | |
^[^? | 「ESC」「Backspace」 | backward-kill-word | |
^[^H | 「ESC」「Ctrl」+「H」 | backward-kill-word | |
^W | 「Ctrl」+「W」 | backward-kill-word | |
^[b | 「ESC」「b」 | backward-word | |
^[B | 「ESC」「B」 | backward-word | |
^[< | 「ESC」「<」 | beginning-of-buffer-or-history | |
^A | 「Ctrl」+「A」 | beginning-of-line | |
^[[200~ | 貼り付け開始 | bracketed-paste | |
^[C | 「ESC」「C」 | capitalize-word | |
^[^L | 「ESC」「Ctrl」+「L」 | clear-screen | |
^L | 「Ctrl」+「L」 | clear-screen | |
^[^_ | 「ESC」「Ctrl」+「_」 | copy-prev-word | |
^[w | 「ESC」「w」 | copy-region-as-kill | |
^[W | 「ESC」「W」 | copy-region-as-kill | |
^D | 「Ctrl」+「D」 | delete-char-or-list | |
^[0 | 「ESC」「0」 | digit-argument | |
^[1 | 「ESC」「1」 | digit-argument | |
^[2 | 「ESC」「2」 | digit-argument | |
^[3 | 「ESC」「3」 | digit-argument | |
^[4 | 「ESC」「4」 | digit-argument | |
^[5 | 「ESC」「5」 | digit-argument | |
^[6 | 「ESC」「6」 | digit-argument | |
^[7 | 「ESC」「7」 | digit-argument | |
^[8 | 「ESC」「8」 | digit-argument | |
^[9 | 「ESC」「9」 | digit-argument | |
^[l | 「ESC」「l」 | down-case-word | |
^[L | 「ESC」「L」 | down-case-word | |
^[[B | 「↓」 | down-line-or-history | |
^[OB | 「ESC」「O」「B」 | down-line-or-history | |
^N | 「Ctrl」+「N」 | down-line-or-history | |
^[> | 「ESC」「>」 | end-of-buffer-or-history | |
^E | 「Ctrl」+「E」 | end-of-line | |
^X^X | 「Ctrl」+「X」「Ctrl」+「X」 | exchange-point-and-mark | |
^[z | 「ESC」「z」 | execute-last-named-cmd | |
^[x | 「ESC」「x」 | execute-named-cmd | |
^[ | 「ESC」「 」 | expand-history | |
^[! | 「ESC」「!」 | expand-history | |
^X* | 「Ctrl」+「X」「*」 | expand-word | |
^[[C | 「→」 | forward-char | |
^[OC | 「ESC」「O」「C」 | forward-char | |
^F | 「Ctrl」+「F」 | forward-char | |
^[f | 「ESC」「f」 | forward-word | |
^[F | 「ESC」「F」 | forward-word | |
^[c | 「ESC」「c」 | fzf-cd-widget | |
^I | 「Ctrl」+「I」 | fzf-completion | |
^I | 「Tab」 | fzf-completion | |
^T | 「Ctrl」+「T」 | fzf-file-widget | |
^R | 「Ctrl」+「R」 | fzf-history-widget | |
^[g | 「ESC」「g」 | get-line | |
^[G | 「ESC」「G」 | get-line | |
^Xr | 「Ctrl」+「X」「r」 | history-incremental-search-backward | |
^S | 「Ctrl」+「S」 | history-incremental-search-forward | |
^Xs | 「Ctrl」+「X」「s」 | history-incremental-search-forward | |
^[p | 「ESC」「p」 | history-search-backward | |
^[P | 「ESC」「P」 | history-search-backward | |
^[n | 「ESC」「n」 | history-search-forward | |
^[N | 「ESC」「N」 | history-search-forward | |
^X^N | 「Ctrl」+「X」「Ctrl」+「N」 | infer-next-history | |
^[_ | 「ESC」「_」 | insert-last-word | |
^[. | 「ESC」「.」 | insert-last-word | |
^X^K | 「Ctrl」+「X」「Ctrl」+「K」 | kill-buffer | |
^K | 「Ctrl」+「K」 | kill-line | |
^U | 「Ctrl」+「U」 | kill-whole-line | |
^[d | 「ESC」「d」 | kill-word | |
^[D | 「ESC」「D」 | kill-word | |
^[^D | 「ESC」「Ctrl」+「D」 | list-choices | |
^Xg | 「Ctrl」+「X」「g」 | list-expand | |
^XG | 「Ctrl」+「X」「G」 | list-expand | |
^[- | 「ESC」「-」 | neg-argument | |
^X^O | 「Ctrl」+「X」「Ctrl」+「O」 | overwrite-mode | |
^[q | 「ESC」「q」 | push-line | |
^[Q | 「ESC」「Q」 | push-line | |
^Q | 「Ctrl」+「Q」 | push-line | |
^[‘ | 「ESC」「’」 | quote-line | |
^[" | 「ESC」「”」 | quote-region | |
^V | 「Ctrl」+「V」 | quoted-insert | |
^[h | 「ESC」「h」 | run-help | |
^[H | 「ESC」「H」 | run-help | |
“-“~ | 「 」から「~」までの文字 | self-insert | |
\M-^@”-“\M-^? | 「Alt」+「Ctrl」+「@」から「Alt」+「Ctrl」+「Backspace」までの入力 | self-insert | |
^[^I | 「ESC」「Tab」 | self-insert-unmeta | |
^[^J | 「ESC」「Ctrl」+「J」 | self-insert-unmeta | |
^[^M | 「ESC」「Ctrl」+「M」 | self-insert-unmeta | |
^[^G | 「ESC」「Ctrl」+「G」 | send-break | |
^G | 「Ctrl」+「G」 | send-break | |
^@ | 「Ctrl」+「@」 | set-mark-command | |
^[\$ | 「ESC」「$」 | spell-word | |
^[s | 「ESC」「s」 | spell-word | |
^[S | 「ESC」「S」 | spell-word | |
^[t | 「ESC」「t」 | transpose-words | |
^[T | 「ESC」「T」 | transpose-words | |
^_ | 「Ctrl」+「_」 | undo | |
^X^U | 「Ctrl」+「X」「Ctrl」+「U」 | undo | |
^Xu | 「Ctrl」+「X」「u」 | undo | |
^[u | 「ESC」「u」 | up-case-word | |
^[U | 「ESC」「U」 | up-case-word | |
^[[A | 「↑」 | up-line-or-history | |
^[OA | 「ESC」「O」「A」 | up-line-or-history | |
^P | 「Ctrl」+「P」 | up-line-or-history | |
^X^V | 「Ctrl」+「X」「Ctrl」+「V」 | vi-cmd-mode | |
^X^F | 「Ctrl」+「X」「Ctrl」+「F」 | vi-find-next-char | |
^[| | 「ESC」「|」 | vi-goto-column | |
^X^J | 「Ctrl」+「X」「Ctrl」+「J」 | vi-join | |
^X^B | 「Ctrl」+「X」「Ctrl」+「B」 | vi-match-bracket | |
^X= | 「Ctrl」+「X」「=」 | what-cursor-position | |
^[? | 「ESC」「?」 | which-command | |
^Y | 「Ctrl」+「Y」 | yank | |
^[y | 「ESC」「y」 | yank-pop |