261
Help us understand the problem. What are the problem?

posted at

updated at

Windows Terminal Tips

Windows Terminal

Windowsの新しいTerminalアプリケーション。WindowのTab化や様々な設定が可能。デフォルトでコマンドプロンプト、PowerShell、WSL、Azure Cloud Shellを使用可能。2020/5/19に正式版(V1.0)がリリースされた。
Preview版で実装されていた設定画面が、遂にV1.7安定板でも実装された。このページで説明していた設定ファイル(settings.json)の編集方法は、ページの後半に移動した。

windows_terminal.png

How to install

Windows 10 1903 (build 18362)以降であれば、インストール可能。
Microsoft StoreからWindows Terminalを検索してインストール。とっても簡単。

Settings

Windows Terminal画面でCtrl + ,を押す、またはTabの右横のメニューからSettingsをクリックすることで設定画面が表示される。基本的に設定画面から設定可能。以降は、設定画面からは設定できず、settings.jsonを直接編集する必要がある設定に関して説明する。settings.jsonCtrl + Shift + ,で開くことができる。

unfocusedAppearance設定(フォーカスが外れた画面の外観設定)

unfocusedAppearanceプロパティで、フォーカスが外れた画面に関する外観の設定を行うことができる。設定できる項目はbackgroundImage, backgroundImageAlignment, backgroundImageOpacity, backgroundImageStretchMode, cursorHeight, cursorShape, cursorColor, colorScheme, foreground, background, selectionBackground, experimental.retroTerminalEffect, experimental.pixelShaderPath。プロファイルのDefault設定 or プロファイルごとの設定のどちらかに設定可能。

settings.json
        "defaults": 
        {
      ...
            "unfocusedAppearance": 
            {
                "foreground": "#DCDFE4",
                "background": "#282C34",
                "experimental.retroTerminalEffect": true
            }
        }

上記の設定結果が下記。フォーカスは下の画面にある。

image.png

Shortcut Keys

覚えておくと便利かも。

機能 ショートカットキー 説明
コマンドパレット Ctrl + Shift + P       
新規タブ作成 Ctrl + Shift + T default shellが起動      
タブの複製 Ctrl + Shift + D 現在のタブの複製      
タブの切り替え Ctrl + Tab
ドロップダウンメニュー表示 Ctrl + Shift + Space 画面上部の下矢印キーをクリックしたときに表示されるメニューを表示
検索 Ctrl + Shift + F
画面の水平分割 Alt + Shift + - 分割画面はdefault shellが起動。
画面の垂直分割 Alt + Shift + + 分割画面はdefault shellが起動。
分割画面間の移動 Alt + ←↑→↓
分割画面のサイズ変更 Alt + Shift + ←↑→↓
全画面モード Alt + Enter or F11 2度押すと元に戻る
Quake Mode Win + ` Windows Terminalが画面上からシュッと表示される。面白い機能だけど便利かというと微妙・・・
設定ファイルのオープン Ctrl + Shift + , settings.jsonを開く

JSON fragment extensions

プロファイルの追加、既存プロファイル設定のアップデート、配色(schemes)設定を、JSONファイルを別途用意することで適用することができる。例えば、下記のファイルをGitBash.jsonとして%LocalAppData%\Microsoft\Windows Terminal\fragments\GitBashフォルダに配置して、Windows Terminalを起動すると、Git Bashがプロファイルに追加される。
本来は、Git Bashのインストール時に、Windows Terminalに追加をオンにするとJSONファイルが追加されるような使い方をするのだと思う(アプリ開発者向け機能)。詳細は、JSONフラグメント拡張機能を参照。

GitBash.json
{
    "profiles": [
        {
            "name": "Git Bash",
            "commandline": "%PROGRAMFILES%/Git/bin/bash.exe -li",
            "icon": "%PROGRAMFILES%/Git/mingw64/share/git/git-for-windows.ico",
            "startingDirectory": "%USERPROFILE%",
            "backgroundImage": "%PROGRAMFILES%/Git/mingw64/share/git/git-for-windows.ico",
            "backgroundImageAlignment": "bottomRight",
            "backgroundImageOpacity": 0.5,
            "backgroundImageStretchMode": "none",
        }
    ]
}

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

Oh My Poshを使うとプロンプトがちょっと見やすく、かつ格好よくなる。チュートリアル: Oh My Posh を使用して PowerShell または WSL のカスタム プロンプトをセットアップするに設定方法が書かれているので、興味がある人は試してみては。私は、WSL Ubuntuで、下記のように設定している。

Caskaydia Cove Nerd Fontフォントのインストール

下記からCaskaydia Cove Nerd Fontフォントをダウンロードし、ダウンロードしたzipファイルを展開する。展開したCaskaydia Cove Nerd Font Complete.ttf右クリックインストールでインストール完了。

Nerd Fonts

Windows TerminalのWSL Ubuntuプロファイル設定変更

設定画面からUbuntuのプロファイル設定のFont faceCaskaydia Cove Nerd Fontに変更。

image.png

Oh My Poshのインストール & 設定

  1. Ubuntuにログイン
  2. 下記のコマンドを実行し、Oh My Poshをインストール
    sudo wget https://github.com/JanDeDobbeleer/oh-my-posh/releases/latest/download/posh-linux-amd64 -O /usr/local/bin/oh-my-posh
    sudo chmod +x /usr/local/bin/oh-my-posh
    
  3. 下記のコマンドを実行し、テーマをダウンロード
    mkdir ~/.poshthemes
    wget https://github.com/JanDeDobbeleer/oh-my-posh/releases/latest/download/themes.zip -O ~/.poshthemes/themes.zip
    unzip ~/.poshthemes/themes.zip -d ~/.poshthemes
    chmod u+rw ~/.poshthemes/*.json
    rm ~/.poshthemes/themes.zip
    
  4. .profileの最終行に下記の一行を追加
    iterm2.omp.jsonは自分の好みのテーマを設定。全てのテーマはここを参照。
    eval "$(oh-my-posh --init --shell bash --config ~/.poshthemes/iterm2.omp.json)"
    

動作確認

一度exitしWSL Ubuntuから切断。再度Windows TerminalでWSL Ubuntuに接続すると、次のキャプチャのようにちょっと素敵になる。

image.png

その他

管理者権限での実行

タブを管理者権限で新規に作成はできない。管理者権限で実行したい場合は、Windows Terminal自身を管理者権限で実行する必要がある。

Preview Channel

Windows Terminal Preview版をここからインストール可能。安定板と共存できるので、新し物好きな方は試してみては。

関連リンク


Windows Terminalの設定は設定画面から可能である。設定内容はsettings.jsonファイルに保存されている。このファイルを直接編集することでも設定を変更することができる。V1.7での設定画面実装前はsettings.jsonを編集して設定を行っていた。以降の内容は、昔懐かしのsettings.jsonを編集していたころの記事である。Windows Terminalを使うにあたっては全く不要の、物好きな人向けの内容である。

settings.jsonでの設定方法

settings.jsonCtrl + Shift + ,で開くことができる。設定の詳細はこのあたりを参照してみましょう。

Global設定

全Terminal画面共通の設定。

Default Profile変更

Windows Terminal起動時に、初期設定ではPowerShellのTerminalが開く。これを自分の好きなshellを起動するように変更できる。
settings.jsonファイルの先頭付近にあるdefaultProfileに自分の好きなshellのGUIDを設定する。

例:defaultProfileをcmd.exeに変更

settings.json(変更前)
...
    "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
        },
...

このdefaultProfileの値をpowershell.exeからcmd.exeのguidに変更して保存する。この後、Ctrl + Shift + Tで新規タブを開いたときや、Windows Terminalを立ち上げたときに、cmd.exeのタブが起動する。

settings.json(変更後)
...
    "defaultProfile": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}", <- cmd.exeのGUIDに変更

    "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
        },
...

画面関連設定

起動時の画面サイズ、画面位置を設定できる。

プロパティ 設定値 説明
launchMode maximized or default maximizedで起動時に最大化
initialPosition x,y(数字) 起動時の位置を指定。0,0で画面左上
initialCols x(数字) 起動時の画面幅サイズ
initialRows y(数字) 起動時の画面高さサイズ
settings.json(画面最大化で起動)
{
    "$schema": "https://aka.ms/terminal-profiles-schema",

    "defaultProfile": "{c6eaf9f4-32a7-5fdc-b5cf-066e8a4b1e40}",
    "launchMode": "maximized",
...
settings.json(横120、縦30、画面左上で起動)
{
    "$schema": "https://aka.ms/terminal-profiles-schema",

    "defaultProfile": "{c6eaf9f4-32a7-5fdc-b5cf-066e8a4b1e40}",
    "initialCols": 120,
    "initialRows": 30,
    "initialPosition": "0,0",
...

テキスト選択時の自動コピー

初期設定では、Terminal上のテキストを選択した際に自動でコピーされる。copyOnSelectfalseに設定することで、Ctrl + Cを押すことで選択したテキストがコピーされるように変更できる。(私はデフォルトのまま使っていますが)

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

    "defaultProfile": "{c6eaf9f4-32a7-5fdc-b5cf-066e8a4b1e40}",
    "copyOnSelect": false,
...

Dark Mode設定

最近ちょっと流行りのDark Mode。themedarkに設定する。デフォルトではシステム設定に従うので、システム設定をDark Modeにしているなら、あえて設定しなくてよい。

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

    "defaultProfile": "{c6eaf9f4-32a7-5fdc-b5cf-066e8a4b1e40}",
    "theme": "dark",
...

Tabサイズ設定

Tabのサイズを変更できる。compactにすると、非アクティブなタブのサイズがコンパクトになる。titleLengthにすると、タブのタイトルのサイズに合わせる。

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

    "defaultProfile": "{c6eaf9f4-32a7-5fdc-b5cf-066e8a4b1e40}",
    "tabWidthMode": "compact",
...

Tab Switcher設定

Alt + Tabを押した際のTab切り替え動作をTab Switcher UIに変更可能。タブの切り替え順番は現時点ではMRUのみ。将来的には、表示順で切り替えられるようにも設定できるようになる。
(一時期Tab Switcherがdefaultになったが、今は元に戻されている。)

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

    "defaultProfile": "{c6eaf9f4-32a7-5fdc-b5cf-066e8a4b1e40}",
    "useTabSwitcher": true,
...

Tab Mode & Tab Switcher

Actions (Key Bindings)設定

キーアクションに好みの動作を割り当て可能。設定できる項目はここを参照。デフォルトの設定はdefault.jsonactions以下を参照。default.jsonはTab右横のメニューからAltを押したまま設定をクリックすることで開くことができる。
デフォルトの設定を変更したり、新しい設定を追加する場合は、settings.jsonに設定を追加する。settings.jsonにデフォルトで記載されているactionsの最後に設定したいキーバインディングを追加していく。
個人的に下記の設定をしている。検索をCtrl+F、次を検索をF3、前を検索をShift+F3、現在のシェル画面分割をAlt+Shift+-(水平分割)、Alt+Shift++(垂直分割)に割り当てている。

settings.json
    "actions": [
        ・・・
        {"command": "find", "keys": "ctrl+f"},
        {"command": {"action": "findMatch", "direction": "next"}, "keys": "f3"},
        {"command": {"action": "findMatch", "direction": "prev"}, "keys": "shift+f3"},
        {"command": {"action": "splitPane", "split": "horizontal", "splitMode": "duplicate"}, "keys": "alt+shift+-"},
        {"command": {"action": "splitPane", "split": "vertical", "splitMode": "duplicate"}, "keys": "alt+shift+plus"}
    ]

Command Palette

Ctrl+Shift+Pでコマンドパレットを使うことができる。普段使わない機能のショートカットキーは覚えていられないので、そういう機能を実行するときに便利。個人的に、F1キーでコマンドパレットを実行できるように、下記の設定をしている。

settings.json
{ "command": "commandPalette", "keys": "f1" }

Profile設定

Profile(シェル)ごとの設定。profiles以降の各Shellに関する設定。

Default設定

全Profile共通の設定。defaultsで設定した内容は、list以降の全Profileに適用される。共通に設定したい項目は、ここで設定するとよい。以下の例では全てのProfileのフォントの種類をCascadia Code、サイズを10に設定する。(なお、デフォルトのフォントはLigatureのないCascadia Mono。)

settings.json
...
    "profiles": {
        "defaults": {
            "fontFace": "Cascadia Code",
            "fontSize": 10
        },
        "list": [
            {
                // Make changes here to the powershell.exe profile
                "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
                "name": "Windows PowerShell",
                "commandline": "powershell.exe",
                "hidden": false
            }
         ]
     },
...

Profile追加(GUID作成方法)

list配下にProfileを追加可能。Linux Serverにsshで接続するメニューを追加することもできる。こことかここを参考にするといいかも。Git Bash等はここを参考に。
なお、追加したProfileをDefault Profileに指定するためには、GUIDを作成する必要があるが、PowershellのNew-Guidコマンドで作成可能。

PS C:\> New-Guid

Guid
----
e5942063-0a0f-45e3-ae44-e10e37337d76

Font変更

Fontの種類をfontFace、サイズをfontSizeで変更可能。プログラマー向けの等幅フォントCascadia Codeを使用可能。なお、Windows TerminalのデフォルトフォントはCascadia Monoだが、このフォントにはCoding Ligature(合字)が入っていない。Coding Ligatureって何?という方はここを見てみましょう。

settings.json
...
    "profiles": {
    ...
        list: [
            {
                // Make changes here to the powershell.exe profile
                "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
                "name": "Windows PowerShell",
                "commandline": "powershell.exe",
                "fontFace": "Cascadia Code",
                "fontSize": 10,
                "hidden": false
            },
...

Color Scheme設定

カラー設定をcolorSchemeで変更可能。設定できる値は、default.jsonを参照。default.jsonはTab右横のメニューからAltを押したままSettingsをクリックすることで開くことができる。自分でsettings.jsonに追加することも可能。好きな人はいろいろ変更してみては。
なお、tabColorでタブの色を設定できるので、backgroundと同じ値にするとシームレスな感じになっていいかも。私は面倒なので設定していないが。

settings.json
...
    "profiles": {
    ...
        list: [
            {
                // Make changes here to the powershell.exe profile
                "name": "Windows PowerShell",
                "commandline": "powershell.exe",
                "tabColor": "#012456",
                "background": "#012456",
                "hidden": false
            },
...

image.png

Window透過設定

Windowの背景を透過させることができる。acrylicOpacityで初期の透過度を設定する。0~1の範囲で設定可能。Windows Terminal画面上でCtrl + Shiftを押したまま、マウスのホイールをスクロールすると動的に透過度を変更可能。

settings.json
...
    "profiles": {
    ...
        list: [
            {
                // Make changes here to the powershell.exe profile
                "name": "Windows PowerShell",
                "commandline": "powershell.exe",
                "useAcrylic": true,
                "acrylicOpacity": 0.5,
                "hidden": false
            },
...
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
Sign upLogin
261
Help us understand the problem. What are the problem?