PowerShell:クリック操作でカーソル位置を移動する設定 (Windows Terminal)

通常、Windows のターミナル (Windows Terminal) で文字入力位置を変えるにはいちいちキーボードの矢印キーでカーソル位置を移動する必要があります。

(macOS のターミナルであれば Optionキー+クリックでそこにカーソルを移動できる)

 

探したらマウスクリックで簡単にカーソル(キャレット)の位置を移動する方法があったので、有効にする手順を以下にメモします。

Windows Terminal で PowerShell 実行時にマウスクリックでカーソル位置を移動できるように設定した結果

↑クリックでカーソル位置を一瞬で移動できて超便利!

 

注意点

使用環境は Windows Terminal (※Windows 11 に標準で入っているターミナル環境) で、対象は PowerShell です。
(コマンドプロンプトで利用するには、PowerShell でコマンド「cmd」を使って PowerShell 上でコマンドプロンプトを実行すればOK。)

この機能を有効化するには PowerShell の実行ポリシーの変更が必要なのでその点はご留意ください。。
(Restricted → RemoteSigned に。方法は後述。)

現段階では実験的機能という位置づけみたいなので、正常に動作しない環境もあるかもしれません。(自分の Win11 環境では動いた)

 

Windows Terminal 側の設定変更

まずはターミナルを起動。

Windows Terminal の起動後の画面

 

メニューボタンをクリックして「設定」を開く。

Windows Terminal の設定画面の開き方

 

「既定値」設定の「詳細設定」をクリック。

Windows Terminal の設定画面の開き方:プロファイルの既定値→詳細設定

 

試験段階: マウスのクリックでカーソル位置を変更する」をオンにする。そして「保存」をクリック。

Windows Terminal で、クリック操作でカーソル位置を移動できるよう設定する方法:「試験段階: マウスのクリックでカーソル位置を変更する」

有効にすると、プロンプト内をクリック時にカーソルがその位置に移動します。これを行うには、シェルでシェル統合を有効にし、期待どおりに動作させる必要があります。

という記載がある通り、追加でシェル統合のための設定が必要。
(この段階ではまだクリック操作でカーソル位置を変更できない)

 

Windows Terminal のシェル統合を有効にする

有志が作成した Windows Terminal のシェル統合プラグインをインストールする。

シェル統合の有効化手順

ターミナルを管理者として起動する。

次のコマンドを実行する。

Install-Module wt-shell-integration -AllowClobber

Windows Terminal のシェル統合を有効にする方法:シェル統合プラグインをインストール

 

※もし実行後に次のようなメッセージが表示されたら、「Y」と入力して Enter で実行。

PowerShellGet で NuGet ベースのリポジトリを操作するには、'2.8.5.201' 以降のバージョンの NuGetプロバイダーが必要です。
⋮ (中略)
NuGet プロバイダーをインストールしてインポートしますか?

Windows Terminal でNuGet プロバイダーをインストール

 

外部のリポジトリからモジュールをインストールするので次のようなメッセージが表示される。

「Y」と入力して Enter で実行。

信頼されていないリポジトリ
信頼されていないリポジトリからモジュールをインストールしようとしています。
⋮ (中略)
'PSGallery' からモジュールをインストールしますか?

Windows Terminal のシェル統合を有効にする方法:シェル統合プラグインのモジュールをインストール

 

次に、このコマンドを実行する。

Import-Module wt-shell-integration; ac $profile "`nImport-Module wt-shell-integration" -encoding utf8 -nonewline

Windows Terminal のシェル統合を有効にする方法:シェル統合プラグインのモジュールをインポート

 

※次のような警告メッセージが表示されて実行できなかった場合
(デフォルトの実行ポリシーではセキュリティの関係上スクリプトが実行できないようになっている)

Import-Module : このシステムではスクリプトの実行が無効になっているため、ファイル C:\Program Files\WindowsPowerShell\Modules\wt-shell-integration\1.0.0\wt-shell-integration.psm1 を読み込むことができません。詳細については、「about_Execution_Policies」(https://go.microsoft.com/fwlink/?LinkID=135170) を参照してください。
発生場所 行:1 文字:1
+ Import-Module wt-shell-integration; ac $profile "`nImport-Module wt-s ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : セキュリティ エラー: (: ) [Import-Module]、PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess,Microsoft.PowerShell.Commands.ImportModuleCommand

 

このターミナル内でだけ実行ポリシーを緩めて、外部からダウンロードしたスクリプトを実行できるようにすればよい。

次のコマンドを実行する。

Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -Force

このターミナル内でだけ実行ポリシーを緩めて、外部からダウンロードしたスクリプトを実行する

このコマンドについて (クリックして表示)

Set-ExecutionPolicy

実行ポリシー(PowerShellでスクリプトファイルを実行する際の許可設定)の変更コマンド。

-ExecutionPolicy Bypass

実行ポリシーを「Bypass」に設定。

スクリプト実行時に一切ブロックされず、警告も非表示の設定。

-Scope Process

実行ポリシーの変更範囲設定。

このプロセス (今開いているターミナル内) でだけ実行ポリシーを変更する。

-Force

実行ポリシー変更時の確認メッセージを非表示にして強制的に実行ポリシーを変更。

 

改めてこのコマンドを実行する。

Import-Module wt-shell-integration; ac $profile "`nImport-Module wt-shell-integration" -encoding utf8 -nonewline

 

実行後、特に何もエラーが表示されず入力待機状態になれば設定完了。

 

この時点で、マウスクリックだけでカーソル位置を自由に変えられるようになっている!

 

この機能を常に許可する

残念ながら PowerShell 側のセキュリティ設定が厳しすぎて、一旦ターミナルを閉じてしまうと次回起動時に次のようなエラーが出て結局この機能が使えなくなってしまう。

PowerShell 起動時に profile.ps1 を読み込めないエラー画面

. : このシステムではスクリプトの実行が無効になっているため、ファイル C:\Users\ユーザー名\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 を読み込むことができません。詳細については、「about_Execution_Policies」(https://go.microsoft.com/fwlink/?LinkID=135170) を参照してください。
発生場所 行:1 文字:3
+ . 'C:\Users\ユーザー名\Documents\WindowsPowerShell\Microsoft.PowerShell_pr ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : セキュリティ エラー: (: ) []、PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess

 

次のコマンドを実行して、今のユーザーの実行ポリシーを恒久的に変更する必要がある。

Set-ExecutionPolicy RemoteSigned -scope CurrentUser -force

PowerShell でユーザーの実行ポリシーを恒久的に RemoteSigned に変更する方法

 

これで実行ポリシーが、スクリプトを実行できない Restricted からローカルスクリプトと署名付きのリモートスクリプトのみ実行できる RemoteSigned に変更され、問題なく使えるようになる。

試しにターミナルを再起動して、エラーメッセージが表示されなくなればOK。

 

使い方と制約

上記の設定を一通り済ませれば、あとはターミナル起動時に自動でこの機能が有効になりマウスクリックだけでカーソル位置を移動できるようになっている。

Windows Terminal で PowerShell 実行時にマウスクリックでカーソル位置を移動できるように設定した結果

 

追加される機能はあくまでクリックによるカーソル移動のみなので、例えばドラッグで範囲選択してバックスペースでまとめて選択範囲を消すなんてことはできない。

 

参考情報

Windows ターミナルの詳細プロファイル設定 | Microsoft Learn

リンク:https://learn.microsoft.com/ja-jp/windows/terminal/customize-settings/profile-advanced#experimental-move-cursor-with-the-mouse

↑今回説明したクリックによるカーソル移動以外にも、ターミナルを便利にする色々な設定があるみたいです。

 

Windows ターミナルのシェル統合 | Microsoft Learn

リンク:https://learn.microsoft.com/ja-jp/windows/terminal/tutorials/shell-integration

記事化前の最新情報はこちらで先にツイートしています。サイト更新告知もこちら。