1. トップ
  2. 新着ニュース
  3. IT
  4. IT総合

タブのウィンドウ間の移動も可能に! 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は、新たにアンパッケージ版の配布が開始された。アンパッケージ版は、ポータブルモード(ポータブル版)としても動作する。また、バージョン情報ダイアログは、開くときにアップデートのチェックをする

 これは、Windows Terminalのアンパッケージ版のあるフォルダに「.portable」という名前のファイル(中身はなくてよい)を作ることで切り替わる。設定は、settingsサブフォルダが自動的に作成されて、そこに保存される。ここに従来と同じくsettings.jsonファイルが置かれる。また、設定ページにポータブルモードで動作している旨のメッセージが表示される。

 ポータブル版はインストールも不要で、USBメモリやネットワークドライブ、クラウドなどにおいても動作するため、ユーザーにインストール権限がない環境や、ローカルストレージに書き込みができないような環境でも動作できる。

 ただし、自動更新や既定のターミナル設定などができない。また、エクスプローラーの右クリックメニューへの「ターミナルで開く」も登録されない。Windows起動時の自動起動もサポートされない。

タブをウィンドウ間で移動できるようになった プレビュー版v1.18

 プレビュー版v1.18の最大の変更点は、プログラム構造が大きく変わり、タブをウィンドウ間で移動できるようになった点だ。これまでのWindows Terminalでは、タブはウィンドウ内で前後に移動させることができるだけだった。

 タブをマウスでドラッグし、他のTerminalウィンドウにあるタブバーの上付近までドラッグすると「↗移動」とアイコンが変わり、ドロップするとタブが移動する。

プレビュー版 v1.18では、タブを他のウィンドウに移動させることが可能になった。タブをドラッグして、別のWindows Terminalウィンドウに移動させられるほか、コマンドパレットから選択中のタブを新しいウィンドウで開くことなどができる

 これにより、多数のタブを開いたとき、ウィンドウを分けて整理することも可能になる。また、コマンドパレットには、「Move tab to new window」(タブを新しいウィンドウに移動)があり、これを使って、現在のタブを新規ウィンドウに移動させることも可能だ。

 この改良の副作用として、Windows Terminalはカレントフォルダをロックしなくなった。そのためエクスプローラーで自由にフォルダのリネームや削除ができるようになる。これまでは、ターミナルを終了させないと、カレントフォルダのロックが解除されなかった。ただし、フォルダ操作のシェルなどへの影響を考慮するのは、ユーザーの責任である。

 また、デスクトップアプリとなったことで、システム環境変数の変化に対応できるようになった。従来は、シェル側で読み込み直ししないと、環境変数の変更には追従しなかった。合わせて、プロファイル定義で、環境変数を追加・変更できるようになった。これにより、環境変数で動作を変えるシェルへの対応や、PATH設定などが異なるプロファイルをWindows Terminalプロファイルで簡単に記述できるようになった。環境変数の変更・追加は、以下のようにする。

"environment": { "環境変数名1":"値1", "環境変数名2":"値2"},

 もう1つの新機能は、右クリックメニューのサポートだ。

プレビュー版 v1.18では、右クリックメニューがサポートされた。メニューにはペイン分割やタブ複製などの項目があり、テキストの選択中は、「検索...」項目も表示される

 これまでは、右クリックメニューはサポートされていなかった。しかしv1.18では、デフォルトで編集メニュー(コピー、ペースト)や「分割ウィンドウ」「タブの複製」「タブを閉じる」が右クリックメニューに表示される。範囲の選択時には「検索」項目も出る。

 右クリックメニューを有効にするには、プロファイル設定に「"experimental.rightClickContextMenu":true」を、設定する必要がある。また、この右クリックメニューは、キーボード操作にも割り当てることが可能だ。

 v1.16から対応が始まったFTCSによるCommand Mark/Shell Integrationをシェル側で対応すると、このメニューに「コマンドの選択」(Select Command)と「出力の選択」(Select Output)が追加される。

FTCSによるShell Integrationを使うと、設定が必要だが、キー操作で、コマンドラインの選択やコマンド出力の選択ができるようになる。また、右クリックメニューには、「コマンドの選択」「出力の選択」項目が追加される

 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ウィンドウ)に近いものとなった。

この記事に関連するニュース

トピックスRSS

ランキング

記事ミッション中・・・

10秒滞在

記事にリアクションする

記事ミッション中・・・

10秒滞在

記事にリアクションする

デイリー: 参加する
ウィークリー: 参加する
マンスリー: 参加する
10秒滞在

記事にリアクションする

次の記事を探す

エラーが発生しました

ページを再読み込みして
ください