Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
211
Help us understand the problem. What is going on with this article?
@whim0321

Windows Terminal Tips

Windows Terminal

Windowsの新しいTerminalアプリケーション。WindowのTab化や様々な設定が可能。デフォルトでコマンドプロンプト、PowerShell、WSL、Azure Cloud Shellを使用可能。2020/5/19に正式版(V1.0)がリリースされた。このページでは、Windows Terminalの設定に関して説明する。
Preview版で実装されていた設定画面が、遂にV1.7安定板でも実装された。このページで説明している設定ファイル(settings.json)の設定は、今や設定画面で設定可能。Key Bindingsの設定はまだ設定画面からは設定できない模様。時間の問題だとは思うが。

windows_terminal.png

How to install

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

Settings

Windows Terminal画面でCtrl + ,を押す、またはTabの右横のメニューからSettingsをクリックすることで設定画面が表示される。Key Bindingsの設定はsettings.jsonを直接編集する必要がある。settings.jsonCtrl + Shift + ,で開くことができる。

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

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度押すと元に戻る

Powerline

Powerlineを使うとプロンプトがちょっと見やすく、かつ格好よくなる。Windows ターミナルで Powerline をセットアップするに設定方法が書かれているので、興味がある人は試してみては。なお、WSL Ubuntuの設定方法として、Goを使って設定する方法が書かれているが、Pythonでも下記の手順でできる。こだわりがなければ、素直にGoの方法でやったほうが楽。

Powerline用のフォントのインストール

Cascadia Code or Cascadia MonoはWindows Terminalに同梱されているが、Powerline用のCascadia Code PL or Cascadia Mono PLは自分でインストールする必要がある。Cascadia Codeのリリースページから、最新のzipファイルをダウンロードする。ダウンロードしたファイルを展開後にインストールしたいフォントを右クリックインストールでインストール完了。

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

WSL Ubuntuのプロファイル設定のfontFaceCascadia Code PL or Cascadia Mono PLに変更。

settings.json
{
    "hidden": false,
    "name": "Ubuntu-20.04",
    "source": "Windows.Terminal.Wsl",
    "fontFace": "Cascadia Code PL"
}

Powerlineのインストール&設定

  1. Windows TerminalでWSL Ubuntuに接続し、下記のコマンドを実行し、Powerlineをインストール。

    pip3 install --user powerline-status
    
  2. .profileの設定
    ~/.profileの最終行以降に下記の設定を追加。

    powerline-daemon -q
    POWERLINE_BASH_CONTINUATION=1
    POWERLINE_BASH_SELECT=1
    . {repository_root}/powerline/bindings/bash/powerline.sh
    

    {repository_root}pip3 show powerline-statusを実行し、結果に表示されるLocationの値で置き換えること。(例:/home/whim0321/.local/lib/python3.8/site-packages

  3. Powerlineの設定変更
    デフォルト設定のままだと、なぜかgitのブランチが表示されないので、いくつか設定を変更する。

    • config.jsondefault_leftonly.jsonをコピー。
    cd ~
    cp -a .local/lib/python3.8/site-packages/powerline/config_files/config.json 
    .config/powerline/
    cp -a .local/lib/python3.8/site-packages/powerline/config_files/themes/shell/default_leftonly.json .config/powerli
    ne/
    
    • コピーしたconfig.jsonを下記のように修正。themeの値をdefaultからdefault_leftonlyに修正。
    .config/powerline/config.json
    "ext": {
    ... 
           "shell": {
                   "colorscheme": "default",
                   "theme": "default_leftonly", // defaulからdefault_leftonlyに変更 
                   "local_themes": {
                           "continuation": "continuation",
                           "select": "select"
                   }
           },
    ...
    
    • コピーしたdefault_leftonly.jsonを下記のように修正。(argsからの4行を追加。しかし、この設定効いてないな・・・)
    .config/powerline/default_leftonly.json
    "left": {
    ...
        {
                "function": "powerline.segments.common.vcs.branch",
                "priority": 40,
                "args": {                           // 追加
                        "status_colors": true,      // 追加
                        "ignore_statuses": ["U"]    // 追加
                }                                   // 追加
        },
    ...
    
    • 一度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

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
            },
...
211
Help us understand the problem. What is going on with this article?
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
whim0321

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
211
Help us understand the problem. What is going on with this article?