PSReadLine の予測機能を使用する
PSReadLine 2.1.0 で Predictive IntelliSense 機能が導入されました。 予測 IntelliSense により、PSReadLine 履歴にある項目に基づいて、完全なコマンドの候補が表示されます。 PSReadLine 2.2.2 は、高度なロジックを使用して完全なコマンドの候補を表示するプラグイン モジュールのサポートを追加することで、予測 IntelliSense の機能を拡張しています。 最新バージョンの PSReadLine 2.2.6 では、既定で予測が有効になります。
予測 IntelliSense の使用
予測 IntelliSense が有効になっている場合、予測候補がユーザーのカーソルの後に色付きのテキストとして表示されます。 予測 IntelliSense からの候補は、PowerShell の新規および経験豊富なユーザーが、一致している予測に基づいて完全なコマンドを発見、編集、実行するのに役立ちます。 候補は、ユーザーの履歴と追加のドメイン固有プラグインから提示されます。
前の画像は、候補の既定の InlineView
を示しています。 右方向キーを押すことでインライン候補を受け入れます。 候補を受け入れた後、Enter キーを押してコマンドを実行する前に、コマンド ラインを編集できます。
PSReadLine には、候補の ListView
表示も用意されています。
リスト ビューの場合は、方向キーを使用して、使用可能な候補をスクロールできます。 リスト ビューには、予測のソースも表示されます。
PSReadLine は既定で InlineView
になります。 F2 キーを押して InlineView
と ListView
を切り替えることができます。 また、Set-PSReadLineOption
の PredictionViewStyle パラメーターを使用してビューを変更することもできます。
予測 IntelliSense の管理
予測 IntelliSense を使用するには、新しいバージョンの PSReadLine がインストールされている必要があります。 最良の結果を得るためには、最新バージョンのモジュールをインストールしてください。
PowerShellGet を使用して PSReadLine をインストールするには、次のようにします。
Install-Module -Name PSReadLine
または、新しい PowerShellGet v3 モジュールを使用してインストールします。
Install-PSResource -Name PSReadLine
PSReadLine は、Windows PowerShell 5.1 または PowerShell 7 以上にインストールすることができます。 予測機能のプラグインを使用するには、PowerShell 7.2 以降を実行している必要があります。 Windows PowerShell 5.1 では、履歴ベースの予測機能を使用することができます。
PSReadLine 2.2.6 では、予測 IntelliSense は、次の条件に応じて既定で有効になります。
- 仮想ターミナル (VT) がサポートされていて、PSReadLine が PowerShell 7.2 以降で実行されている場合、PredictionSource は
HistoryAndPlugin
に設定されます - VT がサポートされていて、PSReadLine が 7.2 より前の PowerShell で実行されている場合、PredictionSource は
History
に設定されます - VT がサポートされていない場合、PredictionSource は
None
に設定されます。
現在の設定を確認するには、次のコマンドを使用します。
Get-PSReadLineOption | Select-Object -Property PredictionSource
予測のソースは、PredictionSource パラメーターを指定した Set-PSReadLineOption
コマンドレットを使用して変更できます。 PredictionSource は次のように設定できます。
None
History
Plugin
HistoryAndPlugin
注意
履歴ベースの予測は、PSReadLine によって管理される履歴から取得されます。 その履歴は、Get-History
を使用して確認できるセッションベースの履歴よりも包括的です。 詳細については、about_PSReadLine の「コマンド履歴」セクションを参照してください。
予測の色の設定
既定では、予測は、ユーザーが入力しているのと同じ行に淡い灰色のテキストで表示されます。 アクセシビリティのニーズをサポートするために、予測の色をカスタマイズできます。 色は ANSI エスケープ シーケンスを使用して定義します。 ANSI エスケープ シーケンスは $PSStyle
を使用して作成できます。
Set-PSReadLineOption -Colors @{ InlinePrediction = $PSStyle.Background.Blue }
または、独自のものを作成することもできます。 既定の淡い灰色の予測テキストの色は、次の ANSI エスケープ シーケンスを使用して復元できます。
Set-PSReadLineOption -Colors @{ InlinePrediction = "`e[38;5;238m" }
予測の色とその他の PSReadLine 設定項目の設定の詳細については、「Set-PSReadLineOption」を参照してください。
キー バインドの変更
PSReadLine には、予測の操作と受け入れのための関数が含まれています。 次に例を示します。
AcceptSuggestion
- 現在のインライン候補を受け入れますAcceptNextSuggestionWord
- インライン候補の次の単語を受け入れますAcceptSuggestion
はForwardChar
内に作成され、既定で RightArrow にバインドされていますAcceptNextSuggestionWord
は関数ForwardWord
内に作成され、Ctrl+f にバインドできます
Set-PSReadLineKeyHandler
コマンドレットを使用して、キー バインドを変更できます。
Set-PSReadLineKeyHandler -Chord "Ctrl+f" -Function ForwardWord
このバインドでは、カーソルが現在の編集行の末尾にあるときに Ctrl+f キーを押すと、インライン候補の次の単語が受け入れられます。 同様の機能のために他のキーを AcceptSuggestion
および AcceptNextSuggestionWord
にバインドできます。 たとえば、RightArrow で、インライン候補の行全体ではなく、候補の次の単語を受け入れるようにすることができます。
Set-PSReadLineKeyHandler -Chord "RightArrow" -Function ForwardWord
他の予測機能プラグインの使用
Az.Tools.Predictor モジュールは、予測 IntelliSense の最初のプラグインでした。 それにより、実行しようとしている Azure PowerShell コマンドと、使用しようとしているパラメーターが、Machine Learning を使用して予測されます。 詳細とインストール手順については、「Az.Tools.Predictor の一般公開の発表」を参照してください。
CompletionPredictor モジュールによって、PowerShell でタブ補完できる項目に IntelliSense エクスペリエンスが追加されます。 PSReadLine を InlineView
に設定すると、通常のタブ補完エクスペリエンスが得られます。 ListView
に切り替えると、IntelliSense エクスペリエンスが得られます。 CompletionPredictor モジュールは、PowerShell ギャラリーからインストールできます。
前述のように、ListView
には予測のソースが表示されます。 複数のプラグインがインストールされている場合、予測はソースごとにグループ化され、最初に履歴、その後に各プラグインが、読み込まれた順序で表示されます。
独自の予測モジュールの作成
C# を使用して独自の予測機能を記述し、コンパイル済みの PowerShell モジュールを作成できます。 そのモジュールで System.Management.Automation.Subsystem.Prediction.ICommandPredictor インターフェイスを実装する必要があります。 このインターフェイスでは、予測結果を照会し、フィードバックを提供するために使われるメソッドが宣言されます。
詳細については、「コマンドライン予測器を作成する方法」を参照してください。
PowerShell