Windows Terminalの正式版がリリースされたが、各種設定を行うプロファイルを編集する必要がある。今回は、キーボードショートカットと配色(カラースキーム)、起動オプションについて解説する。よく利用する操作を設定することで、Windows Terminalがより使いやすくなるはずだ。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
前回のWindows 10 The Latest「【Windows Terminal完全マスター】プロファイルをカスタマイズして使いやすくしよう」に続き、Windows Terminalのプロファイル設定について解説する。基本的なプロファイルの設定については、前回の記事を参照してほしい。今回は、キーボードショートカットの設定方法を中心に解説していく。
Windows Terminalは、執筆時点で通常版の「Windows Terminal バージョン1.0.1811.0」とプレビュー版の「Windows Terminal Preview バージョン1.1.1812.0」(以下、特に区別する場合には、Windows Terminalプレビュー版と表記)の2種類がある。簡単に言うと、通常版が正式にリリースされたバージョン、後者が次期バージョンのプレビュー版である。プレビュー版はバージョンが大きく、実際、機能の追加や改良点もある。しかし、それらが次の通常版で実装される保証もないため、ここでは通常版(バージョン1.0. 1811.0)をベースに話を進めることにする。
ただし、プレビュー版では、今回解説するキーボード回りが改良されており、特定のコンソールアプリケーション/シェルで正しくキーボードが扱えなかった問題を一部解決している。通常版の利用で、キー操作に疑問がある場合には試してみるのもいいだろう。
プレビュー版は、Microsoft Storeの検索ボックスに「Windows Terminal」と入力すると、候補として「Windows Terminal」と「Windows Terminal Preview」が表示されるので、「Windows Terminal Preview」を選択し、[入手]ボタンをクリックするとインストールできる(プレビュー版のアイコンには、「PRE」の表記がある)。また、GitHubの「Windows Terminalページ」で、MSIXパッケージとして公開されているので、これをダウンロードしてインストールすることも可能だ。
両方を同時にインストールすることも可能だが、設定は別々になること、プログラム実行エイリアスとして共に「wt.exe」を使うため、どちらを起動するかを[Windowsの設定]アプリの[アプリ]画面−[アプリ実行エイリアス]で指定する必要がある(起動オプションについて以下の画面を参照)。アイコンは違っているが、基本的に同じプログラムなので、設定などで意図的に概観を変えないと区別しにくいので注意されたい。
Windows Terminalの基本的な情報については、Windows 10 The Latest「ついに完成『Windows Terminal』の機能と使い方まとめ」を参考にしていただきたい。また、Windows Terminalの公式の説明は、Microsoftの「Windows ターミナルとは」ページを参照してほしい。
Windows Terminalのキー割り当てを解説する前に、簡単にWindowsのキーボード入力処理についておさらいしておく。というのも、Windows Terminalは、Windowsとコンソールアプリケーションの間に入り、GUI側のキーボード処理(キーボード入力をイベントとして処理する)を行い、コンソールアプリケーションにキーストロークを送る。このため、Windows Terminalのキー割り当てを注意しないと、コンソールアプリケーションやシェルのキーボード処理に影響を与えてしまうからだ。
Windows 10のキーボードの処理はかなり複雑なのだが、大まかには、下図のようにユーザーの入力したキーストロークは、Windows 10で処理され、次にWindows Terminalがこれを処理した後、コンソールアプリケーションやシェルに送られる。この中で、Windows Terminalの「キー割り当て」は、シェル側に「渡さないキー」を定義することと同義となる。
また、Windows 10が処理してしまうキー(例えば、[Windows]キーの単独押し)は、Windows Terminalでは捉えることができないため、キー割り当てには利用できない。さらにコンソールアプリケーションやシェルは、独自のキーボードショートカットを持っているため、それらのキーボードショートカットをWindows Terminalで処理してしまうとコンソールアプリケーションやシェルで利用できなくなってしまう。そのためWindows Terminalは、コンソールアプリケーションやシェルが使わないキーボードの組み合わせを利用すべきである。
Windows 10 The Latest「【Windows Terminal完全マスター】プロファイルをカスタマイズして使いやすくしよう」では、Windows Terminalの設定ファイルであるsettings.jsonを以下のような部分に分けて解説した。今回は、このうち、後半の「キーボード設定」と「カラースキーム設定」を扱う。前半の「グローバル設定」および「プロファイル設定」に関しては、前記記事を参照いただきたい。
グローバル設定(先頭の「{」直後の部分)
プロファイル設定(「profiles」以降)
プロファイル共通デフォルト値(「defaults」以降)
プロファイル(「list」:以降)
個別プロファイル設定(「{」「}」でくくられている)
カラースキーム設定(「schemes」以降。初期状態では空)
キーボード設定(「keybindings」以降)
Windows Terminalは、下表のようなキーボードショートカットをデフォルトで定義しており、このまま利用するならば、特に設定を変更する必要はない。
キー | 動作 |
---|---|
[Alt]+[Ctrl]+[1] | 先頭のタブに移動 |
[Alt]+[Ctrl]+[2] | 2番目のタブに移動 |
[Alt]+[Ctrl]+[3] | 3番目のタブに移動 |
[Alt]+[Ctrl]+[4] | 4番目のタブに移動 |
[Alt]+[Ctrl]+[5] | 5番目のタブに移動 |
[Alt]+[Ctrl]+[6] | 6番目のタブに移動 |
[Alt]+[Ctrl]+[7] | 7番目のタブに移動 |
[Alt]+[Ctrl]+[8] | 8番目のタブに移動 |
[Alt]+[Ctrl]+[9] | 9番目のタブに移動 |
[Alt]+[Ctrl]+[,(カンマ)] | defaults.jsonの表示 |
[Alt]+[↓] | 下のペインに移動 |
[Alt]+[Enter] | フルスクリーンモードのオンオフ |
[Alt]+[F4] | Windows Terminalウィンドウを閉じる(Windows標準) |
[Alt]+[←] | 左のペインに移動 |
[Alt]+[→] | 右のペインに移動 |
[Alt]+[Shift]+[-(マイナス)] | 水平ペイン分割してデフォルトプロファイルを開く |
[Alt]+[Shift]+[D] | ペインを自動分割で開く(settings.jsonで定義) |
[Alt]+[Shift]+[↓] | カーソルのあるペインを下に拡大 |
[Alt]+[Shift]+[←] | カーソルのあるペインを左に拡大 |
[Alt]+[Shift]+[+(プラス)] | 垂直ペイン分割してデフォルトプロファイルを開く |
[Alt]+[Shift]+[→] | カーソルのあるペインを右に拡大 |
[Alt]+[Shift]+[↑] | カーソルのあるペインを上に拡大 |
[Alt]+[↑] | 上のペインに移動 |
[Ctrl]+[-(マイナス)] | フォントサイズを拡大縮小 |
[Ctrl]+[,(カンマ)] | 設定を開く |
[Ctrl]+[=(イコール)] | フォントサイズを拡大 |
[Ctrl]+[0] | フォントサイズをデフォルトに戻す |
[Ctrl]+[C] | コピー(settings.jsonで定義) |
[Ctrl]+[V] | 貼り付け(settings.jsonで定義) |
[Ctrl]+[Insert] | 単一行のコピー |
[Ctrl]+[Shift]+[1] | プロファイル1で新規タブ |
[Ctrl]+[Shift]+[2] | プロファイル2で新規タブ |
[Ctrl]+[Shift]+[3] | プロファイル3で新規タブ |
[Ctrl]+[Shift]+[4] | プロファイル4で新規タブ |
[Ctrl]+[Shift]+[5] | プロファイル5で新規タブ |
[Ctrl]+[Shift]+[6] | プロファイル6で新規タブ |
[Ctrl]+[Shift]+[7] | プロファイル7で新規タブ |
[Ctrl]+[Shift]+[8] | プロファイル8で新規タブ |
[Ctrl]+[Shift]+[9] | プロファイル9で新規タブ |
[Ctrl]+[Shift]+[C] | 単一行のコピー |
[Ctrl]+[Shift]+[D] | 現在と同じプロファイルで新規タブを開く |
[Ctrl]+[Shift]+[↓] | 1行スクロールダウン |
[Ctrl]+[Shift]+[F] | 端末バッファー内の検索 |
[Ctrl]+[Shift]+[PgDn] | 1ページスクロールダウン |
[Ctrl]+[Shift]+[PgUp] | 1ページスクロールアップ |
[Ctrl]+[Shift]+[Space] | メニューを開く |
[Ctrl]+[Shift]+[T] | デフォルトプロファイルで新規タブを開く |
[Ctrl]+[Shift]+[Tab] | 前のタブに移動 |
[Ctrl]+[Shift]+[↑] | 1行スクロールアップ |
[Ctrl]+[Shift]+[V] | 貼り付け |
[Ctrl]+[Shift]+[W] | ペインを閉じる |
[Ctrl]+[Tab] | 次のタブに移動 |
[F11] | フルスクリーンモードのオンオフ |
[Shift]+[Insert] | 貼り付け |
割り当て済みのキーボードショートカット |
なお、後述するキーボードコマンドの割り当ては、下表のようになっている。
キー | 動作 |
---|---|
[Alt]+[Ctrl]+[1] | { "action": "switchToTab", "index": 0 } |
[Alt]+[Ctrl]+[2] | { "action": "switchToTab", "index": 1 } |
[Alt]+[Ctrl]+[3] | { "action": "switchToTab", "index": 2 } |
[Alt]+[Ctrl]+[4] | { "action": "switchToTab", "index": 3 } |
[Alt]+[Ctrl]+[5] | { "action": "switchToTab", "index": 4 } |
[Alt]+[Ctrl]+[6] | { "action": "switchToTab", "index": 5 } |
[Alt]+[Ctrl]+[7] | { "action": "switchToTab", "index": 6 } |
[Alt]+[Ctrl]+[8] | { "action": "switchToTab", "index": 7 } |
[Alt]+[Ctrl]+[9] | { "action": "switchToTab", "index": 8 } |
[Alt]+[↓] | { "action": "moveFocus", "direction": "down" } |
[Alt]+[Enter] | toggleFullscreen |
[Alt]+[F4] | closeWindow |
[Alt]+[←] | { "action": "moveFocus", "direction": "left" } |
[Alt]+[→] | { "action": "moveFocus", "direction": "right" } |
[Alt]+[Shift]+[-] | { "action": "splitPane", "split": "horizontal" } |
[Alt]+[Shift]+[D] | { "action": "splitPane", "split": "auto", "splitMode": "duplicate" }(settings.jsonで定義) |
[Alt]+[Shift]+[↓] | { "action": "resizePane", "direction": "down" } |
[Alt]+[Shift]+[←] | { "action": "resizePane", "direction": "left" } |
[Alt]+[Shift]+[+] | { "action": "splitPane", "split": "vertical" } |
[Alt]+[Shift]+[→] | { "action": "resizePane", "direction": "right" } |
[Alt]+[Shift]+[↑] | { "action": "resizePane", "direction": "up" } |
[Alt]+[↑] | { "action": "moveFocus", "direction": "up" } |
[Ctrl]+[-] | { "action": "adjustFontSize", "delta": -1 } |
[Ctrl]+[,] | openSettings |
[Ctrl]+[=] | { "action": "adjustFontSize", "delta": 1 } |
[Ctrl]+[0] | resetFontSize |
[Ctrl]+[C] | {"action": "copy", "singleLine": false }(settings.jsonで定義) |
[Ctrl]+[Insert] | { "action": "copy", "singleLine": false } |
[Ctrl]+[Shift]+[1] | { "action": "newTab", "index": 0 } |
[Ctrl]+[Shift]+[2] | { "action": "newTab", "index": 1 } |
[Ctrl]+[Shift]+[3] | { "action": "newTab", "index": 2 } |
[Ctrl]+[Shift]+[4] | { "action": "newTab", "index": 3 } |
[Ctrl]+[Shift]+[5] | { "action": "newTab", "index": 4 } |
[Ctrl]+[Shift]+[6] | { "action": "newTab", "index": 5 } |
[Ctrl]+[Shift]+[7] | { "action": "newTab", "index": 6 } |
[Ctrl]+[Shift]+[8] | { "action": "newTab", "index": 7 } |
[Ctrl]+[Shift]+[9] | { "action": "newTab", "index": 8 } |
[Ctrl]+[Shift]+[C] | { "action": "copy", "singleLine": false } |
[Ctrl]+[Shift]+[D] | duplicateTab |
[Ctrl]+[Shift]+[↓] | scrollDown |
[Ctrl]+[Shift]+[F] | find(settings.jsonで定義) |
[Ctrl]+[Shift]+[PgDn] | scrollDownPage |
[Ctrl]+[Shift]+[PgUp] | scrollUpPage |
[Ctrl]+[Shift]+[Space] | openNewTabDropdown |
[Ctrl]+[Shift]+[T] | newTab |
[Ctrl]+[Shift]+[Tab] | prevTab |
[Ctrl]+[Shift]+[↑] | scrollUp |
[Ctrl]+[Shift]+[V] | paste |
[Ctrl]+[Shift]+[W] | closePane |
[Ctrl]+[Tab] | nextTab |
[Ctrl]+[V] | paste(settings.jsonで定義) |
[F11] | toggleFullscreen |
[Shift]+[Insert] | paste |
キーボードコマンドの割り当て |
キーボード割り当ては、settings.jsonのキーボード設定(keybindings)で行う。この部分は、具体的には、下リストのような構造になっている。簡単に言えば、キーボードコマンドとそれを実行するためのキーストロークを定義したものを並べていく。
"keybindings":[
//引数のないキーボードコマンド
{ "command": "paste", "keys": "ctrl+v" },
//引数のあるキーボードコマンド
{ "command": {"action": "copy", "singleLine": false }, "keys": "ctrl+c" },
:
以下省略
]
キーボードコマンドには、「引数のある」ものと「引数がない」ものがある。引数がないキーボードコマンドにキーボードショートカットを割り当てるには、以下の形式を使う。説明の都合、これを「単純なキーボード定義」と呼ぶ。
{ "command": "キーボードコマンド名", "keys": "キーボードショートカット" },
これに対して、引数を指定するキーボードコマンドを利用する場合には、以下の行を作ってキーボード設定に並べていく(これを「複雑なキーボード定義」とする)。
{ "command": {"action": "キーボードコマンド名", "引数名": 値 }, "keys": "キーボードショートカット" },
キーボードコマンドには、例えば「新規タブ作成(newTab)」「設定ページを開く(openSettings)」などがある。
コマンド名 | コマンド動作 | 引数名 | 値の形式 | 引数の説明 | |
---|---|---|---|---|---|
closeWindow | ウィンドウを閉じる | なし | − | − | |
find | 検索(ダイアログを表示) | なし | − | − | |
openNewTabDropdown | 新規タブポップアップを開く | なし | − | − | |
openSettings | 設定ファイルを開く | なし | − | − | |
toggleFullscreen | フルスクリーンモードトグル切替 | なし | − | − | |
closeTab | 現在のタブを閉じる | なし | − | − | |
duplicateTab | 同じプロファイルで新規タブ | なし | − | − | |
newTab | 新しいタブを開く | commandLine | 文字列値 | 起動するコマンド | |
index | 整数値 | プロファイルインデックス | |||
profile | 文字列値 | プロファイルGUID/名称 | |||
startingDirectory | 文字列値 | 起動ディレクトリ | |||
tabTitle | 文字列値 | タイトル文字列 | |||
nextTab | 現在のタブの右隣のタブを開く | なし | − | − | |
prevTab | 現在のタブの左隣のタブを開く | なし | − | − | |
switchToTab | 0〜8のタブに切り替える | index(必須) | 整数値(0から) | 指定されたタブへ移動 | |
closePane | アクティブペインを閉じる | なし | − | − | |
moveFocus | 指定した方向のペインに移動 | direction(必須) | left/right/up/down | 選択するペインの方向 | |
resizePane | 現在のペインのサイズ変更 | direction(必須) | left/right/up/down | サイズ変更の方向 | |
splitPane | ペイン分割 無指定はデフォルトプロファイル |
commandLine | 文字列値 | 起動するコマンド | |
index | 整数値(0から) | プロファイルインデックス | |||
Profile | 文字列値 | プロファイルのGUID/名前 | |||
split(必須) | vertical/horizontal/auto | ペインの分割方法 | |||
splitMode | duplicate | 現在と同じプロファイル | |||
startingDirectory | 文字列値 | 起動ディレクトリ | |||
tabTitle | 文字列値 | タイトル文字列 | |||
copy | ターミナル内のテキストをコピー | singleLine | 真偽値 | 改行コードを含めるか否か | |
paste | クリップボードから貼り付け | なし | − | − | |
scrollDown | 下スクロール | なし | − | − | |
scrollDownPage | 1ページ下スクロール | なし | − | − | |
scrollUp | 上スクロール | なし | − | − | |
scrollUpPage | 1ページ上スクロール | なし | − | − | |
adjustFontSize | フォントサイズの変更 | delta | 正負の整数値 | フォントサイズの増減 | |
resetFontSize | フォントサイズ変更をリセット | なし | − | − | |
unbound | キー割り当てを解除 | なし | − | − | |
キーボードコマンド一覧 |
引数を持つキーボードコマンドの場合、必須となる引数は必ず記述する必要がある。一方、全ての引数が必須ではないキーボードコマンドの場合で、引数を全て指定しない場合には、単純なキーボード定義を使っても構わない。この場合、該当キーボードコマンドの動作には、プロファイルやデフォルト値などから推測される現在値が使われる。というのは、キー割り当ては、settings.jsonで指定されるが、キーボードコマンドを実行するのは、起動後(settings.jsonによる設定が確定した後)かつ、該当のキーボードが押された段階になるからだ。
キーボードショートカットは、下表の表記を使って記述する。基本的には「修飾キー」(Microsoftの英文ドキュメントでは「Modifiers」)である「Ctrl」「Alt(前面)」「Shift」キーの3つと被修飾キー(同「Modifier Keys」になっており、日本語ドキュメントでは「修飾キー」となっている)の組み合わせを使う。ただし、[Shift]キー単独では、通常の文字入力キーストロークとなり文字入力に差し支えるため、実際には、[Ctrl]+[Shift]キー、[Alt]+[Shift]キー、[Alt]+[Ctrl]+[Shift]キーといったように他の2つの修飾キーと併用することになる。
分類 | キー表記 | 備考 |
---|---|---|
修飾キー | ctrl+、Shift+、alt+ | 以下のキーとの組み合わせ |
ファンクションキー | f1-f24 | "f"+数字で表記 |
英数キー | a-z、0-9 | そのまま表記 |
記号キー | `、-、=、[、]、\、;、'、,、.、/、+ | そのまま表記 |
カーソルキー | down、left、right、up、pagedown、pageup、pgdn、pgup、end、home | キー名称(英文)で表記 |
機能キー | tab、enter、esc/escape、space、backspace、delete、insert | キー名称(英文)で表記 |
テンキー | numpad_0/numpad0 〜 numpad_9/numpad9 numpad_add/numpad_plus (+) numpad_decimal/numpad_period (.) numpad_divide (/) numpad_minus/numpad_subtract (-) numpad_multiply (*) |
"numpad_"または"numpad"とキー名の組み合わせで表記 |
キーボードショートカットの表記 |
シェルでもさまざまなキーボードショートカットが使われており、これを調べるには、それぞれのシェルのドキュメントやコマンドを使うしかない。残念なことにcmd.exeに関しては、自身が使うキーボードショートカットを調べるコマンドがない。
下表は、筆者が調べたcmd.exeのキー割り当てである。なお、現在のcmd.exeをconhost.exeで動作させる[コマンドプロンプト]ウィンドウでは、conhost.exeが提供するクリップボード機能が動作しており、[Ctrl]+[C]キー、[Ctrl]+[X]キー、[Ctrl]+[V]キーが動作する。これは、cmd.exeのキーボードショートカットではない点には注意しよう。
キー | 機能 |
---|---|
[↑] | コマンド履歴を逆順に(先頭に到達するまで)表示 |
[→] | カーソルを1つ右へ移動。空行の時は、直前の行のカーソル位置から1文字コピー |
[↓] | コマンド履歴を順番に(最後に到達するまで)表示 |
[←] | カーソルを1つ左へ移動 |
[Backspace] | カーソル左側の文字を1文字だけ削除して、カーソルを1つ左へ移動 |
[Ctrl]+[→] | 語単位でカーソルを左へ移動 |
[Ctrl]+[←] | 語単位でカーソルを右へ移動 |
[Ctrl]+[C] | スクリプト停止 |
[Ctrl]+[D] | ディレクトリ補完文字のデフォルト値*1 |
[Ctrl]+[End] | カーソル位置から行末までを削除 |
[Ctrl]+[F] | ファイル補完文字のデフォルト値*1 |
([Ctrl]+[Z]) | ファイル終端文字(キーボードショートカットではなく文字扱い) |
[Ctrl]+[Home] | 行の先頭からカーソル位置までを削除 |
[Delete] | カーソル位置の文字を1文字だけ削除 |
[End] | カーソルを行末へ移動 |
[Esc] | 入力を全てキャンセルしてカーソルを先頭へ移動 |
[F1] | [→]キーと同じ |
[F2] | 指定した文字([F2]キーに続いて入力する)の直前までコピー |
[F3] | 直前の行を全てコピーして、カーソルを行末へ移動 |
[F4] | カーソル位置から指定した文字の直前までを削除 |
[F5] | [↑]キーと同じ |
[F6] | EOF([Ctrl]+[Z])を入力 |
[F7] | コマンド履歴ウィンドウをポップアップ表示 |
[F8] | コマンド履歴からカーソルの左側部分に一致するものを選び、順番に表示 |
[F9] | 指定した履歴番号のコマンドを入力 |
[Home] | カーソルを行の先頭へ移動 |
[Insert] | 上書きモードと挿入モードの切り替え |
[PgDn] | コマンド履歴の最後のものを表示 |
[PgUp] | コマンド履歴の先頭のものを表示 |
cmd.exeのキー割り当て *1:レジストリで変更可能 |
WSLなどで利用するLinuxディストリビューションでは、現状bashがシェルとして採用されていることが多い。bashは、readlineという機能により、入力時に簡易なテキスト編集機能を持つ。このため、readlineがカスタマイズされていると、bashが使うキーボードショートカットは、それに応じて変化する。これを調べるには、bash上で「bind」コマンド(bashの内部コマンド)を利用する。具体的には、「bind -p」としてキーボードショートカットを表示させる。このbindコマンドに関しては、bashのman内に説明がある。
PowerShellにもこのreadlineを基に作られたPowerShell用のreadlineモジュールがあり、現状、これが標準で組み込まれている。こちらは、「Get-PSReadLineKeyHandler」でキーボードショートカットを表示することが可能だ。
ざっと調べた限りでは、クリップボード貼り付けの[Ctrl]+[C]キー、[Ctrl]+[V]キー、[Shift]+[Insert]キーでPowerShellのReadlineとWindows Terminalのキーボード割り当てが衝突している。しかし、どちらも同じクリップボードを相手に、同じ動作をしているため、実質的な問題はないと思われる。どうしてもPowerShell側の機能を使いたい場合には、settings.jsonを書き換える必要がある。
以前のWindows Terminal Preview版からインストールしている場合、古いsettings.jsonが残っており、このkeybindingsに関する設定変更が反映されておらず、このエントリーがない可能性がある。このような場合は、一度、Windows Terminalをアンインストールしてから、再インストールしてほしい。
実際にキー割り当てを行ってみよう。デフォルトでは、タブをペインに水平、垂直に分割するキー割り当て([Alt]+[Shift]+[-]キーと[Alt]+[Shift]+[+]キー)は、デフォルトプロファイルで指定されていて、どのタブで使ってもデフォルトプロファイル(初期状態ではPowerShell)を開くようになっている。これを、現在のタブ/ペインと同じプロファイルを使うように書き換えよう。具体的には、settings.jsonのキー割り当て部に以下の記述を行う。
Copyright© Digital Advantage Corp. All Rights Reserved.