Help us understand the problem. What is going on with this article?

Windows Terminal (Preview) メモ

概要

Microsoftが開発しているWindows 10用のターミナルアプリケーションです。2019年12月現在プレビュー版version 0.7がリリースされています。
開発のマイルストーンはMilestones - microsoft/terminalで確認できます。

環境

  • Windows 10 Professional 1909
  • Windows Terminal (Preview) 0.7.3291.0
  • PowerShell Core 6.2

参考

インストール

インストールはWindows Storeから行います。検索フィールドに"Windows Terminal"とキーワードを入力して検索し、検索結果に表示された"Windows Terminal (Preview)"をクリック、下図の画面で入手ボタンをクリックするとインストールが始まります。
2019年12月時点でインストールされるバージョンは0.7です。
wt01.png

起動

スタートメニューに登録されているWindows Terminal (Preview)をクリックするとデフォルトのターミナルが起動します(デフォルトはWindows PowerShell)。
wt02.png

タイトルバーの下向き矢印(ドロップダウンメニュー)をクリックするとメニューが表示されます。ここにはそのPCで利用可能なターミナルが反映されていて、任意のターミナルを起動することができます。
私の使っているPCではCMDとWindows PowerShell (v5.1)の他に、PowerShell Core(v6.2)、WSLにUbuntu 18.04を導入しているので、図のようなメニューになっています。
wt03.png

設定

ドロップダウンメニューのSettingsを選択、またはCtrl + ,を押下するとメモ帳でprofiles.jsonという設定ファイルが開きます。
Windows Terminalの設定はprofiles.jsonを編集することで行います。ファイルを保存するとすぐに反映されるので変更内容を確認しながら設定を行うことが可能です。(画面サイズ等、再起動しないと反映されない項目もあります。)
また、設定内容が正しくなかった場合は図のように画面上に原因箇所を表示してくれます。
wt04.png

初期のprofiles.json

profiles.jsonはGlobal SettingsProfilesColor SchemesKey Bindingsのセクションに分かれています。

// To view the default settings, hold "alt" while clicking on the "Settings" button.
// For documentation on these settings, see: https://aka.ms/terminal-documentation

{
    "$schema": "https://aka.ms/terminal-profiles-schema",

    "defaultProfile": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",

    "profiles":
    [
        {
            // Make changes here to the powershell.exe profile
            "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
            "name": "Windows PowerShell",
            "commandline": "powershell.exe",
            "hidden": false
        },
        {
            // Make changes here to the cmd.exe profile
            "guid": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}",
            "name": "cmd",
            "commandline": "cmd.exe",
            "hidden": false
        },
        {
            "guid": "{574e775e-4f2a-5b96-ac1e-a2962a402336}",
            "hidden": false,
            "name": "PowerShell Core",
            "source": "Windows.Terminal.PowershellCore"
        },
        {
            "guid": "{c6eaf9f4-32a7-5fdc-b5cf-066e8a4b1e40}",
            "hidden": false,
            "name": "Ubuntu-18.04",
            "source": "Windows.Terminal.Wsl"
        },
        {
            "guid": "{b453ae62-4e3d-5e58-b989-0a998ec441b8}",
            "hidden": false,
            "name": "Azure Cloud Shell",
            "source": "Windows.Terminal.Azure"
        }
    ],

    // Add custom color schemes to this array
    "schemes": [],

    // Add any keybinding overrides to this array.
    // To unbind a default keybinding, set the command to "unbound"
    "keybindings": []
}

defaults.json

設定項目のデフォルト値はdefaults.jsonというファイルで管理されています。このファイルの内容を確認するにはドロップダウンメニューのSettingsをAltを押下しながらクリックします。

ドロップダウンメニューのターミナルの並び順

ドロップダウンメニューに表示されるターミナルの並び順はProfilesの記述順になっているので、ここを並び替えればメニューに反映されます。
またメニューの並び順に対応したCtrl + Shift + 1Ctrl + Shift + 2Ctrl + Shift + nというショートカットキーがバインドされています。

画面サイズ

Global SettingsのinitialColsおよびinitialRowsで画面サイズを指定します。

"initialCols": 160,
"initialRows": 40,

デフォルトターミナルの選択

Global SettingsのdefaultProfileに、デフォルトにしたい(Windows Terminalが起動したときに開く)ターミナルのguidを記述します。

"defaultProfile": "{574e775e-4f2a-5b96-ac1e-a2962a402336}",

ターミナルのカスタマイズ

profilesに各ターミナル毎の設定があるので、これを編集してターミナルのカスタマイズを行います。
下記はPowerShell Coreのカスタマイズ例です。

編集前
{
    "guid": "{574e775e-4f2a-5b96-ac1e-a2962a402336}",
    "hidden": false,
    "name": "PowerShell Core",
    "source": "Windows.Terminal.PowershellCore"
},
編集後
{
    "guid": "{574e775e-4f2a-5b96-ac1e-a2962a402336}",
    "hidden": false,
    "name": "PowerShell Core",
    "source": "Windows.Terminal.PowershellCore",
    "colorScheme": "Solarized Dark",
    "cursorShape": "underscore",
    "fontSize": 9,
    "startingDirectory": "C:\\dev"
},

下記はWSLのUbuntu-18.04のカスタマイズ例です。

編集前
{
    "guid": "{c6eaf9f4-32a7-5fdc-b5cf-066e8a4b1e40}",
    "hidden": false,
    "name": "Ubuntu-18.04",
    "source": "Windows.Terminal.Wsl"
},
編集後
{
    "guid": "{c6eaf9f4-32a7-5fdc-b5cf-066e8a4b1e40}",
    "hidden": false,
    "name": "Ubuntu-18.04",
    "commandline": "wsl.exe -d Ubuntu-18.04 -u rubytomato",
    "colorScheme": "One Half Dark",
    "cursorShape": "underscore",
    "fontSize": 9,
    "startingDirectory": "//wsl$/Ubuntu-18.04/home/rubytomato"
},

defaults.jsonにいくつかカラースキーマが定義されています。この定義済みカラースキーマを利用するには、profilesの"colorScheme"にカラースキーマ名を記述します。

カラースキーマ名
Campbell
Campbell Powershell
Vintage
One Half Dark
One Half Light
Solarized Dark
Solarized Light

カラースキーマのカスタマイズ

カスタマイズしたカラースキーマをprofiles.jsonの"schemes"に記述して利用することができます。
色の指定は#RRGGBBまたは#RGBで行います。

// Add custom color schemes to this array
"schemes": [
  {
    "name": "color scheme name",
    "foreground": "foreground color",
    "background": "background color",
    "black": "ANSI black",
    "red": "ANSI red",
    "green": "ANSI green",
    "yellow": "ANSI yellow",
    "blue": "ANSI blue",
    "purple": "ANSI purple",
    "cyan": "ANSI cyan",
    "white": "ANSI white",
    "brightBlack": "ANSI bright black",
    "brightRed": "ANSI bright red",
    "brightGreen": "ANSI bright green",
    "brightYellow": "ANSI bright yellow",
    "brightBlue": "ANSI bright blue",
    "brightPurple": "ANSI bright purple",
    "brightCyan": "ANSI bright cyan",
    "brightWhite": "ANSI bright white"
  }
],

キーバインドの確認

defaults.jsonにいくつかキーバインドが設定されています。

コピー/ペースト

  • コピー: Ctrl + Shift + c
  • ペースト: Ctrl + Shift + v or Ctrl + v

選択しただけでテキストをコピーするにはGlobal SettingsのcopyOnSelectをtrueにします。(デフォルトはfalse)
なお、Altを押しながらマウスカーソルをドラッグするとブロック選択になります。

"copyOnSelect": true,

タブの追加

  • Ctrl + Shift + t

デフォルトのターミナルが追加されます。

タブの複製

  • Ctrl + Shift + d

アクティブになっているタブと同じターミナルが追加されます。

ターミナルを選択

  • Ctrl + Shift + Space

ドロップダウンメニューが開きます。

タブの移動

  • 次のタブ: Ctrl + Tab
  • 前のタブ: Ctrl + Shift + Tab

画面分割

version 0.7で導入された機能で(Windows Terminal Preview v0.7 Releaseを参照)、画面を水平分割、垂直分割することができます。
※現時点では分割された画面のターミナルはデフォルトターミナルになります。

  • 水平分割: Alt + Shift + -
  • 垂直分割: Alt + Shift + +

分割画面の移動はそれぞれAlt + 矢印キーで行います。

  • 右へ移動: Alt + Right
  • 左へ移動: Alt + Left
  • 上へ移動: Alt + Up
  • 下へ移動: Alt + Down

分割画面のリサイズはそれぞれAlt + Shift + 矢印キーで行います。

  • 分割線を右へ: Alt + Shift + Right
  • 分割線を左へ: Alt + Shift + Left
  • 分割線を上へ: Alt + Shift + Up
  • 分割線を下へ: Alt + Shift + Down

タブ/画面を閉じる

  • Ctrl + Shift + w

アクティブな分割画面を閉じます。画面が1つだけの場合はタブを閉じます。

Windows Terminalを閉じる

  • Alt + f4

キーバインドのカスタマイズ

profiles.jsonの"keybindings"にキーバインドを設定します。
基本的な書式は下記の通りでコマンドとバインドするキーをマッピングします。使用できるコマンドはImplemented Keybindingsで確認できます。

{
  "command": "コマンド名",
  "keys": [ "バインドするキー" ]
}

下記はファンクションキー(F1 - F3)を、タブの切り替えにバインドした例です。

// Add any keybinding overrides to this array.
// To unbind a default keybinding, set the command to "unbound"
"keybindings": [
  { "command": { "action": "switchToTab", "index": 0 }, "keys": ["f1"] },
  { "command": { "action": "switchToTab", "index": 1 }, "keys": ["f2"] },
  { "command": { "action": "switchToTab", "index": 2 }, "keys": ["f3"] }
]

sshクライアント

WindowsのOpenSSHクライアントもプロファイルに登録することができます。

OpenSSH

インストールされていると以下の場所にssh.exeが存在します。

> where ssh
C:\Windows\System32\OpenSSH\ssh.exe

以下はsshの接続先にAWS EC2を指定したときの例です。

profiles.json

profiles.jsonにssh.exe用のプロファイルを登録します。このプロファイルのcommandlineには以下の通りssh.exeと接続先を指定します。

(一部抜粋)
"name": "aws",
"commandline": "C:\\Windows\\System32\\OpenSSH\\ssh.exe aws-ec2",
"icon" : "ms-appx:///ProfileIcons/{9acb9455-ca41-5af7-950f-6bca1bc9722f}.png",

接続先は事前に.ssh/configに登録しておきます。

Host aws-ec2
  HostName ec2-xxx-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com
  User ec2-user
  Port 22
  IdentityFile "~/.ssh/keypair.pem"

メニューから登録したプロファイルを選択します。
aws-1.png

aws-2.png

Windows Terminal Preview v0.8 Release

2020年1月14日にv0.8がリリースされました。
about.png

Search

ターミナル内を検索する検索機能が追加されました。
デフォルトのキーバインドは Ctrl + Shift + F です。

Retro Terminal Effects (Experimental)

実験的な機能です。

プロファイルに以下の設定を追加すると

"experimental.retroTerminalEffect": true

CRTディスプレイで表示したようの効果が得られます。
crt.png

Enhanced Panes and Tabs Key Bindings

キーバインディングで新しいタブやペインを開くときに、任意のプロファイルを指定できるようになりました。
たとえば以下の設定はCtrl + Aで、新しいタブでcmdプロンプトがD:\devで開きます。

"keybindings": [
    {
        "command": {
            "action": "newTab",
            "tabTitle": "dev",
            "profile": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}",
            "startingDirectory": "D:\\dev"
        },
        "keys": ["ctrl+a"]
    }
]

Custom Default Settings

デフォルトのプロファイル設定という概念が導入されました。
もともとはこのようなフォーマットですが

"profiles": [
    {
        // 個々のプロファイルの設定をここに記述
    },
    {
        // 個々のプロファイルの設定をここに記述
    },
    {
        // 個々のプロファイルの設定をここに記述
    }
]

デフォルトプロファイルの記述は以下のようになります。defaultsに同じ設定にしたい項目(たとえばフォントサイズやフォントファミリーなど)をまとめて記述できます。
個々のプロファイルに記述した設定はデフォルト設定をオーバーライドします。

"profiles": {
    "defaults": {
        // デフォルトのプロファイル
        // すべてのプロファイルに適用される設定をここに記述
    },
    "list": [
        {
            // 個々のプロファイルの設定をここに記述
            // 個別設定がオーバーライドされる
        },
        {
            // 個々のプロファイルの設定をここに記述
        },
        {
            // 個々のプロファイルの設定をここに記述
        }
    ]
}

Tab Sizing

グローバルプロパティにtabWidthModeというタブの表示幅をコントロールする新しいプロパティが追加されました。
デフォルトは"equal"で、タブの表示幅は等分になります。
equal.png

"tabWidthMode": "equal"

従来の挙動に戻したい場合は"titleLength"を設定します。タブがウィンドウ幅に収まらない場合は左右にスクロール用の が表示されます。
titleLength.png

"tabWidthMode": "titleLength"

Windows Terminal Preview v0.9 Release

2020年2月13日にv0.9がリリースされました。予定では次のリリースが正式版(v1.0)になるとのことです。
version_0_9.png

Command Line Arguments

wt.exe (Windows Terminalの実行プログラム)が引数をサポートしました。引数に開始するディレクトリや使用したいプロファイルを指定することができます。

引数無しで実行するとデフォルトプロファイルが開きます。

> wt

-d

-dで開始するディレクトリを指定できます。
この例はカレントディレクトリをデフォルトプロファイルで開きます。

> wt -d .

-p

-pでプロファイルを指定できます。指定する値はprofiles.jsonで記述したプロファイル名です。(GUIDでも指定できます)
この例はカレントディレクトリをcmdプロファイル(つまりcmd.exe)で開きます。

> wt -d . -p "cmd"

なお、下記のように-pでプロファイルを指定せずにcmd.exeやwsl.exeなどのターミナルプログラムを直接指定すると、デフォルトプロファイル(配色やフォントなどの設定)で、そのプログラムが起動します。

> wt -d . wsl.exe

new-tab

複数のタブを開きたい場合はセミコロンで区切り、new-tabサブコマンドを使用します。
この例は1つ目のタブでカレントディレクトリをデフォルトプロファイルで、2つ目のタブをc:\devディレクトリをcmdプロファイルで開きます。

> wt -d . ; new-tab -d c:\dev -p "cmd"

focus-tab

複数のタブを開いたとき、デフォルトでは最後に開いたタブがフォーカスされていますが、任意のタブをフォーカスしたい場合はfocus-tabサブコマンドと-tオプションでタブのインデックス(最初のタブが0)を指定します。
この例は3つのタブを開き、2番目のタブをフォーカスします。

> wt -d . ; new-tab -d c:\dev ; new-tab -d d:\dev ; focus-tab -t 1

split-pane

ターミナルを複数に分割する場合はセミコロンで区切り、split-paneサブコマンドを使用します。分割方向は-V(垂直分割)、-H(水平分割)です。

> wt -p "Ubuntu-18.04" ; split-pane -V -p "Ubuntu-18.04"

この例は最初に垂直に2分割し、右側をさらに水平に2分割します。

> wt -p "Ubuntu-18.04" ; split-pane -V -p "Ubuntu-18.04" ; split-pane -H -p "Ubuntu-18.04"

new-tabとsplit-pane

ターミナルの分割は現在のタブに対して行われるので、2つのタブを開きそれぞれ分割する場合は、下記のようにサブコマンドの実行順に注意する必要があります。
この例では2つのタブ(1つ目はデフォルトプロファイル、2つ目はUbuntu-18.04)を開き、1つ目のタブを2分割、2つ目のタブを3分割します。

> wt ; split-pane -V ; new-tab -p "Ubuntu-18.04" ; split-pane -V -p "Ubuntu-18.04" ; split-pane -H -p "Ubuntu-18.04"

Auto-Detect PowerShell

端末に複数のPowerShellがインストールされていると、自動検出してプロファイルを構成してくれます。
※この機能は動作確認していません。

Confirm Close All Tabs

複数のタブを開いている状態でWindows Terminalを終了しようとしたときに、すべてのタブを閉じてよいか確認ダイアログが表示されますが、この確認をするかprofiles.jsonで指定できるようになりました。
all_tabs_close.png

下記のconfirmCloseAllTabsをfalseに設定すると確認されなくなります。

"confirmCloseAllTabs": false,

Other Improvements

いくつかの改善が追加されています。

・ CMDやPowerShellではウィンドウにファイルをドラッグ&ドロップすると、カーソルの位置にそのファイルの絶対パスが表示されますが、この機能がWindows Terminalで開いたターミナルでもサポートされました。

Ctrl + InsShift + Insがデフォルトでコピーとペーストにバインドされました。

Shiftを押しながらマウスを左クリックすると選択範囲が拡大します。

下のgifのように、マウスである範囲を選択した状態で、さらにShiftを押しながらマウスを左クリックするとその位置まで選択範囲が広がります。
wt-expand.gif

・ VS Code keys used for key bindings are now supported (i.e. "pgdn" and "pagedown" are both valid)!

キーバインディングに使用されるVSコードキーがサポートされるようになりました(つまり、「pgdn」と「pagedown」の両方が有効です)。

※これは動作未確認です。

Windows Terminal Preview v0.10 Release

2020年3月17日にv0.10がリリースされました。
image.png

Mouse Input

ターミナルで開いたWSL上でマウス入力をサポートしました。こちらは参考にあげたリリースページをご覧ください。

Duplicate Pane

splitPaneに新しいオプションsplitModeが追加されました。
これまではペインの複製にデフォルトのプロファイルが利用されていましたが、アクティブなプロファイルでペインを複製できるようになりました。

このキーバインドはアクティブなプロファイルがなんであれ、複製するペインのプロファイルはデフォルトプロファイルですが、

{ "command": { "action": "splitPane", "split": "auto"}, "keys": ["ctrl+a"] }

以下のように"splitMode": "duplicate"をキーバインドに追記すると、アクティブなプロファイルでペインが複製されます。

{ "command": { "action": "splitPane", "split": "auto", "splitMode": "duplicate"}, "keys": ["ctrl+shift+a"] }

Miscellaneous

Ctrl + Shift + Wheelでアクリルモードの透明度(acrylicOpacity)を動的に変更できるようになりました。
アクリルはprofiles.jsonで有効にできます(この機能は以前から)。たとえば以下のように設定すると

"profiles": {
    "defaults": {
      "useAcrylic": true,
      "acrylicOpacity": 0.3
    },
}

ターミナルがアクティブなときに半透明になります。
acrylic.png

この状態でCtrl + Shiftを押しながらマウスホイールをスクロールすると透明度が徐々に変わっていきます。

補足

Windows Terminalのアップデート

インストールしたWIndows Terminalのアップデートは自動的に行われているようですが、新しいバージョンのリリース直後など、すぐにアップデートしたい場合は、Microsoft Storeから手動でアップデートします。
Microsoft Storeを起動してマイライブラリにアクセスすると、更新可能であれば下図のように表示されています。
”利用可能な更新プログラム”の右側のダウンロードアイコンをクリックするとアップデートが始まります。
ms_store.png

GUIDの発行

profile.jsonに新しいプロファイルを登録するとき、プロファイルを一意に識別するためのGUIDを設定する必要がありますが、下記のPowerShellコマンドで発行できます。

> [guid]::NewGuid()

Guid
----
8240bd89-2c9e-4594-9877-18465af49581

プロンプトのカスタマイズ

参考にあげたページで紹介されているPowerShell Core プロンプトのカスタマイズ例です。
この例の前提としてGit for Windowsがインストールされている必要があります。
※注意)このカスタマイズを行うとPowerShell Core単体で実行した場合のプロンプトの表示が少しおかしくなります。

powerline.png

モジュールのインストール

PowerShell Coreを開き、下記コマンドを実行してposh-git、oh-my-posh、PSReadLineをインストールします。

Install-Module posh-git -Scope CurrentUser
Install-Module oh-my-posh -Scope CurrentUser
Install-Module -Name PSReadLine -AllowPrerelease -Scope CurrentUser -Force -SkipPublisherCheck

プロファイルの編集

コマンドラインに$PROFILEと入力してEnterを押すと、プロファイルの場所がわかります。

> $PROFILE

プロファイルをテキストエディタで開き、下記の行を追記します。
3行目はテーマで個人の好みに合わせて設定できます。この例ではParadoxを使用しています。

Import-Module posh-git
Import-Module oh-my-posh
Set-Theme Paradox

フォントのインストール

デフォルトのCascadia Codeではプロンプトの文字が一部文字化けするので、Cascadia Code PLというフォントをmicrosoft / cascadia-codeよりダウンロードしてインストールします。

Windows Terminalのprofiles.jsonを開き、使用するフォントをCascadia Code PLへ変更します。

"fontFace": "Cascadia Code PL",
rubytomato@github
今までJavaをメインにやってきましたが、JavaScript(Node.js)の習得に取り組み始めました。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした