複数のコマンドラインをタブ対応のWindows Terminalで統合

コマンドライン使っていますか?

便利な機能やサービスが増えれば増えるほど、
コマンドラインを使う機会が多くなってきましたね。

Windowsでコマンドラインといっても
コマンドプロンプトやPowerShell、WSL(Windows Subsystem for Linux)など
いろんなシェルも使うし、気づいたらウィンドウだらけ。

Windowsって標準でタブ化できないんです…

タブ化するためにConEmuというアプリケーションを使ってきましたが、
バッファがおかしくなってしまって操作できなくなる事も。

そこで、まだプレビュー版ですがMicrosoftが開発している
Windows Terminal v0.8が公開されたので使ってみました。

Windows Terminalとは

Microsoftが開発しているオープンソースのターミナルアプリケーション

2020年1月14日に「Windows Terminal Preview v0.8 」が公開されました。

2020年4月に正式版をリリース予定

特徴

  • ・コマンドプロンプトやPowerShell、WSLなどのシェルに対応
  • ・タブ機能
  • ・ペイン分割
  • ・UTF-8及びUTF-16のサポート
  • ・IME入力対応
  • ・GPUによるDirectXベースの高速なテキスト描画
  • ・バッファ内のテキスト検索
  • ・テーマの変更
  • ・CRTディスプレイのようなレトロ効果

インストール

対応OS: Windows 10 May 2019 Update(バージョン 1903)以降

Microsoft Storeを開き「Windows Terminal」と検索してインストール。

使い方

これだけ覚えておけばだいたいなんとかなる。

キーバインドは、いつも変更せずに使っています。
環境が変わってもデフォルトを覚えておけば済むからって理由。

デフォルトのキー割り当て

対応するプロファイルのシェルを開く[Ctrl] + [Shift] + [1] ~ [9]
新規タブ[Ctrl] + [Shift] + [T]
垂直ペイン分割[Alt] + [Shift] + [+]
水平ペイン分割[Alt] + [Shift] + [-]
ペインを閉じる[Ctrl] + [Shift] + [W]
コピー[Ctrl] + [Shift] + [C]
貼り付け[Ctrl] + [Shift] + [V]
テキスト検索[Ctrl] + [Shift] + [F]

設定

プルダウンメニューで「Settings」を選択するとprofiles.jsonが
規定のエディタで開くので編集して保存すると反映されます。

デフォルトプロファイル

デフォルトで開かれるシェルのプロファイルを指定します。
設定したいプロファイルの”guid”をセット。

profiles.json

"defaultProfile": "{2c4de342-38b7-51cf-b940-2309a097f518}",

フォント

“fontFace”でフォントを、”fontSize”でサイズを指定します。

Windows Terminalに同梱された「Cascadia Code」を設定してみました。
これもMicrosoftが開発したターミナルやコードエディタ向けの等幅フォント。

profiles.json

{
    "guid": "{2c4de342-38b7-51cf-b940-2309a097f518}",
    "name": "Ubuntu",
    "source": "Windows.Terminal.Wsl",
    "fontFace": "Cascadia Code",
    "fontSize": 10
}

起動時のディレクトリ

“startingDirectory”に起動時のディレクトリを指定できます。

profiles.json

{
    "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
    "name": "Windows PowerShell",
    "commandline": "powershell.exe",
    "startingDirectory": "c:\\pyprojects"
},


WSLの場合は “commandline”で指定します。
例ではホームディレクトリ「~」を設定しています。

profiles.json

{
    "guid": "{2c4de342-38b7-51cf-b940-2309a097f518}",
    "name": "Ubuntu",
    "source": "Windows.Terminal.Wsl",
    "commandline": "wsl.exe ~ -d Ubuntu"
}

背景画像

かわいい背景画像も設定できちゃいます。

profiles.json

{
    "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
    "name": "Windows PowerShell",
    "commandline": "powershell.exe",
    "backgroundImage": "C:\\img\\jixiao.jpg",
    "backgroundImageOpacity": 0.75,
    "backgroundImageStrechMode": "fill"
}

レトロ効果

v0.8から実験的に導入されたレトロ効果です。
“experimental.retroTerminalEffect”: true を設定するとできるらしいのですが、僕の環境では反映されませんでした。

profiles.json

{
    "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
    "name": "Windows PowerShell",
    "commandline": "powershell.exe",
    "experimental.retroTerminalEffect": true
},

プロファイルの共通設定

“defaults” に共通化したい項目をセット。各プロファイルを”list” に設定すれば、
プロファイルの設定を共通化することができます。

profiles.json

"profiles": {
        "defaults": {
            "fontFace": "Cascadia Code",
            "fontSize": 10
        },
        "list": [
            {
                "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
                "name": "Windows PowerShell",
                "commandline": "powershell.exe"
            },
            {
                "guid": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}",
                "name": "cmd",
                "commandline": "cmd.exe"
            },
            {
                "guid": "{2c4de342-38b7-51cf-b940-2309a097f518}",
                "name": "Ubuntu",
                "source": "Windows.Terminal.Wsl"
            }
        ]
    },


その他の設定はドキュメントを参照してみてください。

https://github.com/microsoft/terminal/blob/master/doc/cascadia/SettingsSchema.md

Windows Terminalを使ってみて

Windows Terminalを使えば
コマンドプロンプトやPowerShell、WSLを1つに統合できるので
コマンドライン環境がとてもスッキリしました。

WSLを使っているならWindows Terminalとの相性はよさそう。
どちらもMicrosoftですからね。

まだプレビュー版ということもあって、
ペイン分割がデフォルトのシェルしか開かなかったり、
レトロ効果を試してみたかったのですが…反映しなくて残念。

今のところアプリケーションが落ちてしまったり、
バッファがおかしくなるということはありませんでした。

今後のバージョンアップに期待して、このまま使い続けようと思います。

2020年4月の正式版リリースが楽しみですね。