タブのウィンドウ間の移動も可能に! Windows Terminal v1.17/v1.18の新機能を見る
ASCII.jp / 2023年6月4日 10時0分
Windows Terminalの2023年第2四半期のリリースが5月24日に実施された。公開されたのは、プレビュー版v1.18と安定版v1.17である。なお、直後の30日にはそれぞれのアップデート版が公開されている。原稿執筆時点の最新版は、プレビュー版がv1.18.1462.0、安定版がv1.17.11461.0だった。本稿はこのバージョンで確認している。
プレビュー版では、タブのウィンドウ間の移動がサポートされるなど、かなり大きな改良点がある。この機能は初期から対応を予定していたが、プログラム構造などの問題で簡単ではなかったようだ。ここでは、このプレビュー版を中心に最新のWindows Terminalについて解説したい。
ZIPファイルでのアンパッケージ版の配布も開始された 安定版v1.17
最初に安定版v1.17について解説しておこう。v1.17に関しては、以前、この連載でプレビュー版として解説している。基本的な機能などは、そちらを参照していただきたい(「「Windows Terminal」「PowerToys」「Winget」 Microsoft系OSSのアップデート情報」)。機能的な違いとしては、安定版には「スクロールバーマーク機能」がまだ搭載されていないという点がある。
今回からは安定版/プレビュー版ともに配布形式に変更がある。まず、ZIPファイルによるアンパッケージ版の配布が開始された。これは、v1.17からUWPアプリではなく完全なデスクトップアプリになったからだ。アンパッケージ版は、Microsoftストアによる自動更新はない。また、Windows Terminal自体、複数のアンパッケージ版が共存可能なため、いつまでも特定のバージョンを残せるようになる。もっとも開発者でもないと、あまり役に立つ機能ではないかもしれない。
同時にアンパッケージ版は、インストールディレクトリに設定ファイルを保存する「ポータブル版」(ポータブルモード)でも、動作できるようになった。
これは、Windows Terminalのアンパッケージ版のあるフォルダに「.portable」という名前のファイル(中身はなくてよい)を作ることで切り替わる。設定は、settingsサブフォルダが自動的に作成されて、そこに保存される。ここに従来と同じくsettings.jsonファイルが置かれる。また、設定ページにポータブルモードで動作している旨のメッセージが表示される。
ポータブル版はインストールも不要で、USBメモリやネットワークドライブ、クラウドなどにおいても動作するため、ユーザーにインストール権限がない環境や、ローカルストレージに書き込みができないような環境でも動作できる。
ただし、自動更新や既定のターミナル設定などができない。また、エクスプローラーの右クリックメニューへの「ターミナルで開く」も登録されない。Windows起動時の自動起動もサポートされない。
タブをウィンドウ間で移動できるようになった プレビュー版v1.18
プレビュー版v1.18の最大の変更点は、プログラム構造が大きく変わり、タブをウィンドウ間で移動できるようになった点だ。これまでのWindows Terminalでは、タブはウィンドウ内で前後に移動させることができるだけだった。
タブをマウスでドラッグし、他のTerminalウィンドウにあるタブバーの上付近までドラッグすると「↗移動」とアイコンが変わり、ドロップするとタブが移動する。
これにより、多数のタブを開いたとき、ウィンドウを分けて整理することも可能になる。また、コマンドパレットには、「Move tab to new window」(タブを新しいウィンドウに移動)があり、これを使って、現在のタブを新規ウィンドウに移動させることも可能だ。
この改良の副作用として、Windows Terminalはカレントフォルダをロックしなくなった。そのためエクスプローラーで自由にフォルダのリネームや削除ができるようになる。これまでは、ターミナルを終了させないと、カレントフォルダのロックが解除されなかった。ただし、フォルダ操作のシェルなどへの影響を考慮するのは、ユーザーの責任である。
また、デスクトップアプリとなったことで、システム環境変数の変化に対応できるようになった。従来は、シェル側で読み込み直ししないと、環境変数の変更には追従しなかった。合わせて、プロファイル定義で、環境変数を追加・変更できるようになった。これにより、環境変数で動作を変えるシェルへの対応や、PATH設定などが異なるプロファイルをWindows Terminalプロファイルで簡単に記述できるようになった。環境変数の変更・追加は、以下のようにする。
"environment": { "環境変数名1":"値1", "環境変数名2":"値2"},
もう1つの新機能は、右クリックメニューのサポートだ。
これまでは、右クリックメニューはサポートされていなかった。しかしv1.18では、デフォルトで編集メニュー(コピー、ペースト)や「分割ウィンドウ」「タブの複製」「タブを閉じる」が右クリックメニューに表示される。範囲の選択時には「検索」項目も出る。
右クリックメニューを有効にするには、プロファイル設定に「"experimental.rightClickContextMenu":true」を、設定する必要がある。また、この右クリックメニューは、キーボード操作にも割り当てることが可能だ。
v1.16から対応が始まったFTCSによるCommand Mark/Shell Integrationをシェル側で対応すると、このメニューに「コマンドの選択」(Select Command)と「出力の選択」(Select Output)が追加される。
FTCSとはFinal Term Command Sequencesの略で、Final Termが搭載したエスケープシーケンスである。これでコマンドラインやコマンド出力を選択状態にできるようになる。この機能は、スクロールバーマーク機能を使うため、安定版は対応していない。
具体的には、FTCSによるCommand Mark/Shell Integrationは、以下の表のようなエスケープシーケンスを、シェル出力に挿入する。場所は、プロンプトの開始、コマンドの開始、コマンド出力の終わりで、FTCSをコンソールに出力すると、Windows Terminalがバッファ内の位置を記録する。
このとき、selectCommand、selectOutputアクションでその位置へスクロールできるほか、同時に範囲が選択状態となる。必要ならクリップボードにコピー(右クリックメニューやキー割り当て)ができる。コマンドラインでは、不用意に長い出力を出してしまうコマンドを実行してしまうことがあるが、このような場合でも、コマンドラインの位置まで戻ることができる。
PowerShellをFTCS対応させる
PowerShellをFTCS Command Mark/Shell Integrationに対応させるには、prompt関数を定義する。
※ 以下の関数を$PROFILEで示すファイルに書き込むか直接実行する。スクリプトの実行許可を出しておく
Function prompt() { $OSC="$([char]27)]" $ST="$([char]27)\" #FTCS_COMMAND_FINISHED、FTCS_PROMPT $promptString="${OSC}133;D${ST}`a${OSC}133;A${ST}" $promptString+="PS>" write-host $promptString -NoNewline -ForegroundColor Cyan return " ${OSC}133;B${ST}" }
PowerShellでは、プロンプトは関数になっていて、この関数の戻り値を使う(何も戻さないとデフォルトのプロンプトが出力されるので注意)。これをPowerShellの(プロファイル)に入れておく。
次に、Windows Terminalでキー割り当て("actions"セクション)をする。
※挿入位置を示すため、オブジェクトの先頭部分を含む点に注意
"actions": [ // 上記の記述がある場所に、ここから先を挿入する {"keys":"ctrl+shift+<","command":{"action":"selectCommand","direction":"prev"}}, {"keys":"ctrl+shift+>","command":{"action":"selectCommand","direction":"next"}}, {"keys":"ctrl+shift+[","command":{"action":"selectOutput","direction":"prev"}}, {"keys":"ctrl+shift+]","command":{"action":"selectOutput","direction":"next"}}, {"keys":"ctrl+shift+z","command":"showContextMenu"}, {"keys":"alt+shift+down","command":{"action":"scrollToMark","direction":"next"}}, {"keys":"alt+shift+up","command":{"action":"scrollToMark","direction":"previous"}},
また、Profileセクションで、デフォルトプロファイル設定に以下のリストの設定を追加する。
※挿入位置を示すため、オブジェクトの先頭部分を含む点に注意
"profiles": { "defaults": { // 上記の記述がある場所に、ここから先を挿入する "experimental.autoMarkPrompts": true, "experimental.rightClickContextMenu": true, "experimental.showMarksOnScrollbar": true, "scrollbarState": "visible",
このあたりに関しては、過去記事も参照してほしい(「正式版が登場したWindows Terminalをカスタマイズする」「Windows Terminalのカスタマイズを研究【キーボード編】」。
これで、「Ctrl+Shift+<」で前のコマンドを選択、「Ctrl+Shift+[」でコマンド出力を選択状態にできる。複数打鍵で、さらに前方のコマンド、コマンド出力を選択し、「Ctrl+Shift+>」「Ctrl+Shift+]」で後方に戻る。また、「Shift+Alt+上/下」でプロンプト位置までスクロールする。
右クリックメニューはマウスの位置で変わる。コマンド出力などの上で開けば、コマンドや出力の選択が表示されるが、まだコマンドも表示されていない領域では、デフォルトのメニューのみになる。また、テキストが選択状態だと「検索」項目が表示される。
その他、細かい変更点がある。詳細に関しては、GitHubのWindows Terminalのリリースページに記載(リリースノート)がある。
●Releases · microsoft/terminal(英語) https://github.com/microsoft/terminal/releases
今回のアップデートで、安定版、プレビュー版ともにデスクトップアプリとなり、アンパッケージ版も配布されるようになった。従来、UWPの制限により、レジストリ書き換えなどにも制限があったが、これでほぼ従来のコンソールウィンドウ(conhostウィンドウ)に近いものとなった。
この記事に関連するニュース
-
WSL 2.4.4ではtar形式でのディストリビューションが配布でき、企業での利用が容易になってきた
ASCII.jp / 2024年11月24日 10時0分
-
Windowsの「ペイント」と「メモ帳」がAI対応!? もう高価な編集アプリ要らないかも
ASCII.jp / 2024年11月7日 17時30分
-
Windows Subsystem for Linuxガイド 第41回 WSL GUI設定
マイナビニュース / 2024年11月7日 15時31分
-
Excelをノーコードで自動化しよう! パワークエリの教科書 第26回 「条件列」を使った区分用データの作成
マイナビニュース / 2024年11月5日 11時0分
-
【徹底検証】本当に使えるChrome拡張機能はどれ? 第6回 拡張機能の管理方法(追加/削除、有効/無効、キー設定など)
マイナビニュース / 2024年10月31日 9時0分
ランキング
-
1クレジットカードを少額で不正利用されていない? 巧妙な新手口を解説
ITmedia エンタープライズ / 2024年11月26日 7時15分
-
2リンク付き投稿は拡散力減?イーロン氏明かすXルール 「告知投稿めっちゃ影響」不満も続々
J-CASTニュース / 2024年11月26日 17時11分
-
3『ドラクエ3』大魔王ゾーマ様、配信者になる―自己紹介では「嫌いなもの:ひかりのたま」とポロリ、「“ほりい”とかいう人間も泣き叫んでた」
インサイド / 2024年11月26日 13時10分
-
4オリエンタルランド、東京ディズニーリゾート販売の“3800円のマイボトル”回収 対象個数は4240個…… 「ご迷惑とご心配」
ねとらぼ / 2024年11月26日 17時12分
-
5アップル「iOS 19」SiriがChatGPTみたいになる?
ASCII.jp / 2024年11月26日 20時0分
記事ミッション中・・・
記事にリアクションする
記事ミッション中・・・
記事にリアクションする
エラーが発生しました
ページを再読み込みして
ください