共用方式為


在 PSReadLine 中使用預測值

PSReadLine 2.1.0 引進了 預測性 IntelliSense 功能。 預測性 IntelliSense 會根據 PSReadLine 歷程記錄中的專案,提供完整命令的建議。 PSReadLine 2.2.2 藉由新增使用進階邏輯提供完整命令建議之外掛程式模組的支援,來擴充預測性 IntelliSense 的強大功能。 最新版本 PSReadLine 2.2.6 預設會啟用預測。

使用預測性 IntelliSense

啟用預測性 IntelliSense 時,預測建議會顯示為使用者游標後面的彩色文字。 來自預測性 IntelliSense 的建議可協助 PowerShell 探索、編輯及執行完整命令的新使用者,並根據比對預測來執行完整的命令。 建議可能來自用戶的歷程記錄和其他網域特定外掛程式。

預測的內嵌檢視

先前的影像會顯示建議的預設值 InlineView 。 按 RightArrow 鍵可接受內嵌建議。 接受建議之後,您可以先編輯命令行,再按 Enter 鍵執行命令。

PSReadLine 也提供 ListView 建議的呈現方式。

預測的清單檢視

在清單檢視中時,您可以使用箭頭鍵來捲動可用的建議。 清單檢視也會顯示預測的來源。

PSReadLine 預設為 InlineView。 您可以按 F2 鍵在 和 ListView 之間InlineView切換。 您也可以使用的 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),且在 PowerShell 7.2 或更高版本中執行的 PSReadLine,PredictionSource 會設定為HistoryAndPlugin
  • 如果支援 VT,且在 PowerShell 中執行的 PSReadLine 早於 7.2,PredictionSource 會設定為History
  • 如果不支援 VT,PredictionSource 會設定為 None

使用下列命令來檢視目前的設定:

Get-PSReadLineOption | Select-Object -Property PredictionSource

您可以使用 Cmdlet 搭配 PredictionSource 參數來變更預測來源Set-PSReadLineOptionPredictionSource 可以設定為:

  • None
  • History
  • Plugin
  • HistoryAndPlugin

注意

以歷程記錄為基礎的預測來自 PSReadLine維護的歷程記錄。 該歷程記錄比您可以使用 Get-History的會話型歷程記錄更全面。 如需詳細資訊,請參閱 about_PSReadLine命令歷程記錄一節。

設定預測色彩

根據預設,預測會出現在使用者正在輸入之相同行的淺灰色文字中。 若要支持輔助功能需求,您可以自定義預測色彩。 色彩是使用 ANSI 逸出序列來定義。 您可以使用 $PSStyle 來撰寫 ANSI 逸出序列。

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 Cmdlet 來變更金鑰系結。

Set-PSReadLineKeyHandler -Chord "Ctrl+f" -Function ForwardWord

使用此系結時,按下 Ctrl+f 會在游標位於目前編輯行結尾時,接受內嵌建議的下一個字。 您可以將其他索引鍵系結至 AcceptSuggestionAcceptNextSuggestionWord ,以取得類似的功能。 例如,您可能想要讓 RightArrow 接受內嵌建議的下一個字,而不是整個建議行。

Set-PSReadLineKeyHandler -Chord "RightArrow" -Function ForwardWord

使用其他預測子外掛程式

Az.Tools.Predictor 模組是預測性 IntelliSense 的第一個外掛程式。 它會使用 機器學習 來預測您想要執行的 Azure PowerShell 命令,以及您想要使用的參數。 如需詳細資訊和安裝指示,請參閱 宣佈 Az.Tools.Predictor 正式運作。

CompletionPredictor 模組會針對可在 PowerShell 中填入索引標籤的任何專案,新增 IntelliSense 體驗。 將 PSReadLine 設定為 InlineView,您會取得一般索引標籤完成體驗。 當您切換至 ListView時,您會取得 IntelliSense 體驗。 您可以從 PowerShell 資源庫 安裝 CompletionPredictor 模組。

使用 CompletionPredictor 的 PowerShell IntelliSense

如先前所述, ListView 會顯示預測的來源。 如果您已安裝多個外掛程式,預測會依列出歷程記錄的來源分組,後面接著每個外掛程式載入的順序。

建立您自己的預測工具模組

您可以使用 C# 撰寫自己的預測工具,以建立已編譯的 PowerShell 模組。 模組必須實 作 System.Management.Automation.Subsystem.Prediction.ICommandPredictor 介面。 這個介面會宣告用來查詢預測結果的方法,並提供意見反應。

如需詳細資訊,請參閱 如何建立命令行預測器