azukipochette's weblog

memory dump (mini)

開発者のための Windows Terminal 入門

f:id:AzukiPochette:20200215000346j:plain

Windows Terminal は Windows 10 以降で使える新しいターミナルである。 従来のターミナル (cmd.exe など) と比較すると、"tmux" のようにタブやペインが使えるほか、ウィンドウ内での文字列検索などにも対応おり、絵文字 (🍺) の表示もサポートしている。

Windows ユーザーの多くは絵文字表示に必要性/利便性を感じないかもしれないが、Linux などの世界では出力に絵文字を使うアプリケーションも増えているため、Windows Subsystem for Linux (WSL) ユーザーなどは不満を感じていた点ではないかと思う。 ちなみに、 Windows の世界でも "Dapr" などマルチ プラットフォーム対応なアプリケーションの一部で絵文字が使われ始めている。

Windows Terminal のインストール

インストール要件

  • Windows 10 Version 1903 (18362) 以上が必要 *1
  • x86, x64, ARM64 に対応

インストール方法

以下のリンクからダウンロードできる (Windows Store 経由) www.microsoft.com

ショートカット キー

既定のショートカット キーについて以下に示す。

ショートカット キーが他のアプリケーションと競合してしまっているケースや、自分の好みと異なる場合は、JSON ファイル形式の設定ファイルを変更することで、好みの設定変更できる。

なお、コマンドライン上で動作するアプリケーションのショートカット キーとバッティングしないために、Shift キー付きでバインドされていることが多い。

基本操作

操作 キー
コピー Ctrl + Shift + C
貼り付け Ctrl + Shift + V
検索 Ctrl + Shift + F

タブの操作 *2

操作 キー
プロファイル 0 のタブを開く 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
現在のタブを複製 Ctrl + Shift + D
次のタブ Ctrl + Tab
前のタブ Ctrl + Shift + Tab
タブ 0 に移動 Ctrl + Alt + 1
タブ 1 に移動 Ctrl + Alt + 2
タブ 2 に移動 Ctrl + Alt + 3
タブ 3 に移動 Ctrl + Alt + 4
タブ 4 に移動 Ctrl + Alt + 5
タブ 5 に移動 Ctrl + Alt + 6
タブ 6 に移動 Ctrl + Alt + 7
タブ 7 に移動 Ctrl + Alt + 8
タブ 8 に移動 Ctrl + Alt + 9

ペインの操作

既定ではペイン操作用のショートカットは設定されていない様なので、私は以下のように設定に追加している。*3

{
    "command" : "splitHorizontal",
    "keys" : ["ctrl+shift+-"]
},
{
    "command" : "splitVertical",
    "keys" : ["ctrl+shift+|"]
},
{
    "command" : "moveFocusUp",
    "keys" : ["ctrl+alt+up"]
},
{
    "command" : "moveFocusDown",
    "keys" : ["ctrl+alt+down"]
},
{
    "command" : "moveFocusLeft",
    "keys" : ["ctrl+alt+left"]
},
{
    "command" : "moveFocusRight",
    "keys" : ["ctrl+alt+right"]
},
{
    "command" : "resizePaneUp",
    "keys" : ["shift+alt+up"]
},
{
    "command" : "resizePaneDown",
    "keys" : ["shift+alt+down"]
},
{
    "command" : "resizePaneLeft",
    "keys" : ["shift+alt+left"]
},
{
    "command" : "resizePaneRight",
    "keys" : ["shift+alt+right"]
},
{
    "command" : "closePane",
    "keys" : ["ctrl+shift+w"]
}

その他

操作 キー
設定を開く Ctrl + ,

なお、設定を開くと、JSON ファイルに関連付けされている既定のアプリケーションが起動するので、注意すること。 特に Visual Studio を使用している開発者は、既定が Visual Studio になっていることがあるので、"Visual Studio Code" など比較的軽量なエディタに関連付けしておくと良い。

コマンドライン引数

Windows Terminal をコマンドラインから起動する場合は wt で起動できる。

wt

また、バージョン 0.9 で、コマンドライン引数にも対応している。 バージョン 0.9 でのヘルプを以下に示す。

wt - the Windows Terminal
Usage: [OPTIONS] [SUBCOMMAND]

Options:
  -h,--help                   Print this help message and exit

Subcommands:
  new-tab                     Create a new tab
  split-pane                  Create a new split pane
  focus-tab                   Move focus to another tab

ディレクトリを開く

特定のディレクトリを開くには、"-d" オプションを使用する。"C:\Windows" を開く例を以下に示す。

wt -d C:\Windows

現在のディレクトリを Windows Terminal で起動したい場合は次のようにする。*4

wt -d .

応用としては、Explorer.exe のアドレス バーで cmd や powershell を起動している方は、代わりに "wt -d ." を入力することで、Windows Terminal を起動することができる (デフォルトのプロファイルで起動する)。

レイアウトを変更する (タブを開く/ペインを分割する)

パラメータを指定することで、起動時にタブやペインの構成を指定することができる。 なお、";" の前後には必ず空白を挿入する必要があるので、注意すること。

追加でタブを開く場合は、new-tab コマンドを使用する。 下記の例では、既定のプロファイルのタブに加えて、PowerShell のタブが表示される。

wt ; new-tab -p "Windows PowerShell"

なお、-p オプションには、プロファイル名を指定する必要がある。プロファイル名が不明な場合は、設定ファイルのプロファイルを確認すると良い。たとえば、下記のプロファイルの場合、"name" が示す "Windows PowerShell" がプロファイル名である。

{
    "tabTitle": "PowerShell",
    "suppressApplicationTitle": true,
    "acrylicOpacity": 0.5,
    "background": "#012456",
    "closeOnExit": true,
    "colorScheme": "Campbell",
    "commandline": "powershell.exe",
    "cursorColor": "#FFFFFF",
    "cursorShape": "bar",
    "fontFace": "Consolas",
    "fontSize": 11,
    "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
    "historySize": 9001,
    "icon": "ms-appx:///ProfileIcons/{61c54bbd-c2c6-5271-96e7-009a87ff44bf}.png",
    "name": "Windows PowerShell",
    "padding": "0, 0, 0, 0",
    "snapOnInput": true,
    "startingDirectory": "%USERPROFILE%",
    "useAcrylic": false
},

プロファイル名を指定する方法の他に、実行ファイルを指定する方法もある。たとえば、WSL の既定を開く場合は、以下のように指定する。

wt ; new-tab wsl.exe

ペインを分割する場合は、split-pane コマンドを使用する。 下記の例では、ペインが分割され、左側は既定のプロファイル、右側は PowerShell が表示される。

wt ; split-pane -p "Windows PowerShell"

なお、分割する方向は 水平を示す -H 、または垂直を示す -V オプションを指定すればよい。指定しない場合は、垂直 (縦) に分割される。

水平 (横) に分割する場合の例を以下に示す。

wt ; split-pane -p "Windows PowerShell" -H

参考情報

公式ブログ

Windows Terminal の情報は以下のブログで紹介されている。新機能の紹介なども説明しているので、参考にされたい。

devblogs.microsoft.com

ユーザー ドキュメント

公式なユーザー向けのドキュメントは GitHub 上で公開されているので、機能について知りたい場合は以下を参照すると良い。

github.com

*1:この要件は、バージョンアップで変更になる可能性がある

*2:それにしても、なぜタブ番号は 0 オリジンなのか...

*3:なお、1Password を使っている場合、"Ctrl + Sfhit + \" が競合してしまうので、1 Password 側を変更すると良い

*4:"." は現在のパスを示す