ターミナルを使った作業においては、キーボードのショートカットを使いこなすことが極めて重要となる。マウスやトラックパッドを使うためにキーボードから手を離す必要がなくなるため、結果として作業効率を大幅に上げることにつながるからだ。

Windows Terminalも、基本的にはキーボードショートカットのみで大半の作業ができるように設計されている。今回は、Windows Terminalに用意されたキーボードショートカットの設定を確認した上で、それを自分なりにカスタマイズする方法について解説する。

ショートカットの設定の記述方法

キーボードショートカットに関する設定は、「default.json」や「setting.json」の下のほうにある「keybindings」のブロックに記述されている。

setting.jsonおよびdefault.jsonの構造

記述の形式は2種類ある。まず引数を受け取らないコマンドについては、次のような形式でコマンド名とショートカットキーを指定する。

{ "command": "コマンド名", "keys": "ショートカットキー" },

例えば、ターミナルのウィンドウを閉じるショートカットに「Alt」+「F4」キーを割り当てたい場合の設定は次のようになる。「closeWindow」はターミナルウィンドウを閉じるコマンドだ。

{ "command": "closeWindow", "keys": "alt+f4" },

引数を指定して実行するコマンドもいくつかある。そうしたコマンドの場合、ショートカットキーの設定は次のような形式で記述する。

{ "command": { "action": "コマンド名", "引数名": "引数の値" }, "keys": "ショートカットキー" }

例えばペインを作成する「splitPane」コマンドは、「split」引数にペインを開く方向を「”horizontal”」または「”vertical”」で指定して実行する。このコマンドに対して「alt」+「shift」+「-」(横方向に開く)および「alt」+「shift」+「+」(縦方向に開く)を割り当てたい場合の設定は次のようになる。

{ "command": { "action": "splitPane", "split": "horizontal" }, "keys": "alt+shift+-" },
{ "command": { "action": "splitPane", "split": "vertical" }, "keys": "alt+shift+plus" },

ショートカットキーのために使用できるコマンドと引数、キーの指定についてはMicrosoftが公開している「Windows ターミナルのカスタム キー バインド」にまとめられているので参照されたい。

デフォルトで用意されているショートカット

前述のように、setting.jsonとdefault.jsonにはあらかじめ主要なショートカットが一通り設定されている。そのうち、タブ操作に関するショートカットは第25回ですでに紹介した。

そのほかのショートカットとしては、default.jsonには次のようなものが用意されている。

キー操作 内容
「Alt」+「F4」 ターミナルウィンドウを閉じる
「Alt」+「Enter」 フルスクリーンにする
「F11」 同上
「Ctrl」+「Shift」+「Space」 ドロップダウンメニューを表示
「Ctrl」+「,」 設定ファイルを開く
「Ctrl」+「Shift」+「f」 検索ボックスを表示
「Ctrl」+「Shift」+「c」 選択文字列のコピー
「Ctrl」+「Insert」 同上
「Ctrl」+「Shift」+「v」 貼り付け
「Shift」+「Insert」 同上
「Ctrl」+「Shift」+「↓」 下にスクロール
「Ctrl」+「Shift」+「PageDown」 下に1ページ分スクロール
「Ctrl」+「Shift」+「↑」 上にスクロール
「Ctrl」+「Shift」+「PageUp」 上に1ページ分スクロール
「Ctrl」+「=」 フォントを大きくする
「Ctrl」+「-」 フォントを小さくする
「Ctrl」+「0」 フォントを元に戻す

また、setting.jsonには次のようなものが用意されている。

キー操作 内容
「Ctrl」+「c」 選択文字列のコピー
「Ctrl」+「v」 貼り付け
「Ctrl」+「Shift」+「f」 検索ボックスを表示

コピーと貼り付けについては、プレビュー版のWindows Terminalではdefault.jsonのショートカットしか用意されていなかったが、正式版になるにあたってsetting.jsonの設定が追加された。そのほかにも、ショートカット関連のデフォルト設定は、プレビュー版から正式版になるにあたって大幅に変更されているので、プレビュー版からのユーザーは第23回の記事も参考にしながら設定を見直してほしい。

オリジナルのショートカットを設定する

setting.jsonを書き換えれば、デフォルトのショートカットキーの挙動を変更したり、新しいショートカットキーを登録したりすることもできる。

例えば、次の設定をkeybindingsブロックの後方に書き加えれば、「Ctrl」+「f」で検索ボックスを開いたり、「Alt」+「→」および「Alt」+「←」でタブを移動できるようになる。

// 「Ctrl」+「f」で検索
{ "command": "find", "keys": "ctrl+f" },
// 「Alt」+「→」or「←」でタブ移動
{ "command": "nextTab", "keys": "alt+right" },
{ "command": "prevTab", "keys": "alt+left" },

default.jsonのショートカット設定を無効にする

さて、setting.jsonの設定は自分で自由に編集することができるが、default.jsonに設定されている内容は変更することができない。ただし、default.jsonとsetting.jsonで、同じキー操作に対して異なる操作内容が定義されている場合、setting.jsonのほうが優先されるという決まりがある。そこで、もしdefault.jsonのショートカットの設定が気に入らない場合には、setting.jsonの方で同じキー操作に別のコマンドを割り当てて設定を上書きしてしまうといいだろう。

コマンドを変えるのではなく単にそのショートカットを無効にしたいという場合には、次のようにコマンド名の代わりに「unbound」と記述すればよい。

// 「Ctrl」+「Shift」+「c」or「v」によるコピー/ペーストを無効に
{ "command": "unbound", "keys": "ctrl+shift+c" },
{ "command": "unbound", "keys": "ctrl+shift+v" },

この例では、default.jsonで定義されている「Ctrl」+「Shift」+「c」によるコピーと、「Ctrl」+「Shift」+「v」による貼り付けを無効にしている。

ターミナルを使った作業はほとんどがテキスト入力で完結するため、マウスが必要になることはあまりない。ショートカットキーを使いこなせればキーボードから手を離す回数をさらに減らせるため、作業効率は大幅に向上するはずだ。

参考資料