[PowerShell] PSReadLine 2.2がリリースされました

2022.02.24

しばたです。

PowerShellコンソールに様々な拡張機能を提供しているPSReadLine 2のマイナーバージョンアップであるVer.2.2がリリースされました。
前回PSReadLine 2.1がリリースされてから約1年3ヶ月ぶりの更新となります。

PowerShell Teamからのアナウンスはこちらとなります。

インストール・アップデート方法

今回既存環境でのアップデートをしやすくするためリリースバージョンが2.2.0ではなく2.2.2となっています。
Install-Moduleコマンドでそのままインストールおよびアップデートができるとのことです。

# Windows PowerShell環境の場合はよしなに -Scope パラメーターを指定してください
Install-Module -Name PSReadLine -Force

ただ、私の環境ではテスト用にPSReadLine Ver.2.2-rc1を利用していたのですが、この場合はInstall-ModuleコマンドでVer.2.2.2がインストールされるもVer.2.2-rc1が優先してロードされてしまう事象に遭遇しました。

アップデートが上手くいかない場合は一度インストール済みのバージョンをアンインストールしてから最新バージョンを再インストールすると良いでしょう。

サポートされる環境

なお、PSReadLine 2.2は

  • Windows PowerShell 5.1
  • PowerShell 7.x

のみのサポートですのでご注意ください。

PSReadLine 2.2 新機能

PSReadLine 2.2はマイナーバージョンアップですのでさほど目立った更新はありません。
Change Logの大部分は内部処理の見直しだったりバグフィックスです。
本記事ではPowerShell Team Blogでも紹介されている3つの新機能について解説します。

Predictive IntelliSense

こちらは前回「Fish風オートサジェスト機能」として紹介した入力補完機能です。
PSReadLine 2.1リリース時点ではベータ機能扱いだったはずですが、PowerShell Team Blogの内容を見る限りこのバージョンで正式扱いと見做して良さそうな感じです。

PSReadLine 2.1リリース時点から増えた機能として、入力補完の候補をリスト表示するListView形式が増えています。

今回増えたListView形式はこんな感じ。

(図は https://devblogs.microsoft.com/powershell/psreadline-2-2-ga/ より引用)

この機能の設定方法はPSReadLine 2.1の時と同様にSet-PSReadLineOptionコマンドで設定します。

# Fish風のオートサジェスト機能を有効に
# -PredictionViewStyle パラメーターで表示形式を指定
Set-PSReadLineOption -PredictionSource History -PredictionViewStyle ListView
# (optional) Ctrl+f 入力で前方1単語進む : 補完の確定に使う用
Set-PSReadLineKeyHandler -Key "Ctrl+f" -Function ForwardWord

この設定はコンソールを終了するとリセットされますので、永続させたいときはプロファイルに記述する様にしてください。

Dynamic Help

この機能はF1キーを押した際に入力内容によって表示するヘルプの内容を動的に変える機能となります。

PowerShell Team BlogにあるGif画像を見てもらうのが手っ取り早い気がしますが、例えばGet-ChildItemコマンドレットに対するヘルプを表示する際に、

  • Get-C[F1キー]という入力をすると「類似のコマンドレットをリストアップ」
  • Get-ChildItem[F1キー]という入力をすると「Get-ChildItemコマンドレットのヘルプを表示」
  • Get-ChildItem -Path[F1キー]という入力をすると「-Pathパラメーターのヘルプを表示」

といった動作をします。
より詳細な情報についてはこちらのブログをご覧ください。

非常に便利な機能ではありますが現在のPowerShellのヘルプは英語のみの提供ですので日本人にはちょっと使いにくいかもしれません。

ユーザー独自のPredictor

前述のPredictive IntelliSenseはデフォルトで提供される入力履歴からの予測に加えユーザーが独自の予測機能(Predictor)を追加できる様になっています。

現時点ではまだAzure PowerShell向けのAz.Tools.Predictorくらいしか実例がありませんが、時間が経てば他のPredictorも増えていくと思います。

いずれAWS Tools for PowerShell向けのPredictorも増えると嬉しいですね。

最後に

以上となります。

Predictive IntelliSenseはPSReadLine 2.1の頃からずっと利用しており最早これなしの生活は考えられないくらい愛用しています。
皆さんもぜひPSReadLineをアップデートして使ってみてください。