以前も触れたように、Windows Terminalでは月1回のマイナーバージョンアップを繰り返すというリリースサイクルが採用されている。最新版であるWindows Terminal 1.3は2020年9月22日にリリースされた。前回、同バージョンの最も大きな変更であるコマンドパレットの拡張について紹介したので、今回はそれ以外の新機能や変更点について取り上げたい。

高度なタブスイッチャー

複数のタブを開いている場合で、アクティブなタブを変更したいときには、マウスでタブをクリックする以外に、ショートカットキーを使って「次」または「前」のタブへ移動する方法が用意されていた。バージョン1.3では、このショートカットキーによるタブ移動により高度な機能が追加された。それが「タブスイッチャー」である。

「次」または「前」のタブへ移動するコマンドは「nextTab」および「prevTab」で、デフォルトではこれらのコマンドに「Ctrl」+「Tab」、および「Shift」+「Ctrl」+「Tab」のショートカットキーが割り当てられている。新たに追加されたタブスイッチャーが有効になっている場合、これらのショートカットキーを入力すると、以下のようにプルダウンで現在開いているタブの一覧が表示される。

タブ切り替えが便利になるタブスイッチャー

この状態でカーソルを移動して開きたいタブを選択すれば、選んだタブがアクティブになる。つまり、「次」と「前」以外のタブへもキーボードだけで移動できるようになったというわけだ。

「nextTab」を入力した場合にはデフォルトで次のタブが、「prevTab」の場合にはデフォルトで前のタブが選択された状態になっているので、カーソルを移動させないでキーを離せば、そのまま「次」または「前」のタブが開く。結果的に、従来の「nextTab」「prevTabと」同じ挙動になるため、特に違和感なく利用できるはずだ。

タブスイッチャーの有効/無効はグローバル設定のuseTabSwitcherプロパティで設定できる。「default.json」の設定値は「true」、つまり有効になっているので、もし無効にしたい場合には、「setting.json」のグローバル設定で次のように「false」をセットすればよい。無効にした場合、「nextTab」「prevTabと」は従来通りの挙動に戻る。

// タブスイッチャーの無効化
"useTabSwitcher": false,

プロファイルごとのタブ色の設定

バージョン1.1からタブの色が変更できるようになっているが、バージョン1.3ではプロファイルごとにデフォルトのタブ色を設定できるよになった。そのために、プロファイルに追加できるプロパティとしてtabColorプロパティが追加された。

例えば、次のように各プロファイルにtabColorプロパティを設定しておけば、タブを開いたときの最初の色はそれぞれの設定値の色になっているはずだ。

"profiles":
{
    "defaults":
    {
            // Put settings here that you want to apply to all profiles.
    },
    "list":
        [
            {
                "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
            "name": "Windows PowerShell",
            "commandline": "powershell.exe",
            "hidden": false,
            "colorScheme": "Solarized Dark",
            "tabColor": "#aa66ff"
        },
        {
            "guid": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}",
            "name": "コマンド プロンプト",
            "commandline": "cmd.exe",
            "hidden": false,
            "tabColor": "#664466"
        },
        {
            "guid": "{b453ae62-4e3d-5e58-b989-0a998ec441b8}",
            "hidden": false,
            "name": "Azure Cloud Shell",
            "source": "Windows.Terminal.Azure",
            "tabColor": "#00aaff"
        },
        {
            "guid": "{574e775e-4f2a-5b96-ac1e-a2962a402336}",
            "hidden": false,
            "name": "PowerShell",
            "source": "Windows.Terminal.PowershellCore",
            "tabColor": "#aaaaff"
        },
        {
            "guid": "{07b52e3e-de2c-5db4-bd2d-ba144ed6c273}",
            "hidden": false,
            "name": "Ubuntu-20.04",
            "source": "Windows.Terminal.Wsl",
            "tabColor": "#ff6666"
        },
        {
            "guid": "{5fa2a3c4-c9db-4743-a01c-3ce1988f6231}",
            "hidden": false,
            "name": "MyHostへのSSH接続",
            "commandline": "ssh myhost",
            "tabColor": "#ffaa99"
        }
    ]
},

プロファイルごとにタブ色を決められる

新しいコマンドの追加

これまでのバージョンアップ同様、バージョン1.3でもいくつかの新しいコマンドが追加されている。これらのコマンドはキーボードショートカットの設定に使用することができる。デフォルトでは全て無効になっており、ショートカットキーを割り当てることか、コマンドパレットに追加することで利用できるようになる。

ショートカットキーでwtコマンドを実行する

第19回の記事で、wtコマンド(wt.exe)を使うことで新たにWindows Terminalを立ち上げることや、現在のWindows Temrninalに対してタブを追加したり、ペインによる分割をしたりといった操作ができることを紹介した。バージョン1.3では、このショートカットキーでwtコマンドを実行できるようになった。

次の設定は、「PowerShellで新規タブを開いて、コマンドプロンプトとUbuntuのペインで分割する」という一連の操作を、「Ctrl」+「Shift」+「n」で可能にする例である。

// PowerShellで新規タブを開いて、コマンドプロンプトとUbuntuのペインで分割する
{
    "command":
    {
        "action": "wt",
        "commandline": "new-tab -p PowerShell; split-pane -V cmd.exe; split-pane -p Ubuntu-20.04"
    },
    "keys": "ctrl+shift+n"
}

actionプロパティに「wt」と指定することで、wtコマンドにショートカットキーが割り当てられる。wtコマンドに渡すサブコマンドやオプションはcommandlineプロパティに指定する。new-tabサブコマンドで新規タブを作成し、2つのsplit-paneサブコマンドで2回ペイン分割を行なっているわけだ。

キーボードショートカットとwtコマンドを組み合わせられる

この方法でよく使うタブやペインの構成などにショートカットキーを割り当てておくと、一瞬で作業環境をセットアップできるので便利だ。wtコマンドのサブコマンドやオプションについては第19回を参照していただきたい。

シェルに固定の文字を入力する

ターミナルを使った作業をしていると、よく使うコマンドをショートカットキーで入力できたら便利だと感じることがよくある。バージョン1.3ではこの要望を叶える新しい機能として「sendInput」というコマンドが追加された。sendInputは、inputプロパティに指定されたテキストの内容をシェルに入力するコマンドになる。

例えば次のように設定した場合、「Ctrl」+「Shift」+「s」で「ssh -p 9876 sasaki@myhost」が入力されるようになる。

// シェルに「ssh -p 9876 sasaki@myhost」を入力する
{
    "command":
    {
        "action": "sendInput", "input": "ssh -p 9876 sasaki@myhost"
    },
        "keys": "ctrl+shift+s"
}

長いコマンドもワンタッチで入力可能

よく使う長いコマンドなどはこの方法でショートカットキーを割り当てておくと便利だろう。

タブの検索

タブ間の移動については先に紹介したタブスイッチャーによってかなり便利になったが、大量のタブを開いて作業している場合にはそれでも少々面倒になることがある。そんなときはタブを検索するtabSerachコマンドを利用するといい。これは、開いているタブのなかから特定の名前のタブを探し出してくれるというもので、次のように設定する。

// タブ検索
{ "command": "tabSearch", "keys": "ctrl+shift+f" }

この例では、「Ctrl」+「Shift」+「f」を入力すると、以下のように現在開いているタブの一覧が表示される。タブスイッチャーと同様にここでタブを選んでもいいが、上部のテキストフィールドにタブ名を入力すれば、ヒットしたタブだけに絞り込むこともできる点がこの機能のうれしいところだ。

タブを検索して移動する

カラースキーマの変更

バージョン1.3で追加された4つ目のコマンドが、キーボードショートカットからカラースキームを変更できるsetColorSchemeコマンドだ。次のようにcolorSchemeプロパティに任意のカラースキーム名をセットしておくと、現在のウィンドウがそのカラースキームに切り替わる。

//カラースキーマの変更
{
    "command":
    {
        "action": "setColorScheme", "colorScheme": "Solarized Light"
    },
    "keys": "ctrl+shift+c"
}

この例の場合、「Ctrl」+「Shift」+「c」を入力すると次のようにカラースキームが「Solarized Light」に変わる。

カラースキームに関する詳細は、本連載の第27回を参照していただきたい。

以上がWindows Terminal 1.3で追加・拡張された新機能になる。特にこのバージョンで完成度が高まったコマンドパレットについては、作業の効率に大きく影響するので大いに活用していきたい。

参考資料