在 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-PSReadLineOption
。 PredictionSource 可以設定為:
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
,預設會系結至 RightArrowAcceptNextSuggestionWord
是建置在 函式ForwardWord
內,它可以系結至 Ctrl+f
您可以使用 Set-PSReadLineKeyHandler
Cmdlet 來變更金鑰系結。
Set-PSReadLineKeyHandler -Chord "Ctrl+f" -Function ForwardWord
使用此系結時,按下 Ctrl+f 會在游標位於目前編輯行結尾時,接受內嵌建議的下一個字。 您可以將其他索引鍵系結至 AcceptSuggestion
和 AcceptNextSuggestionWord
,以取得類似的功能。 例如,您可能想要讓 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 模組。
如先前所述, ListView
會顯示預測的來源。 如果您已安裝多個外掛程式,預測會依列出歷程記錄的來源分組,後面接著每個外掛程式載入的順序。
建立您自己的預測工具模組
您可以使用 C# 撰寫自己的預測工具,以建立已編譯的 PowerShell 模組。 模組必須實 作 System.Management.Automation.Subsystem.Prediction.ICommandPredictor 介面。 這個介面會宣告用來查詢預測結果的方法,並提供意見反應。
如需詳細資訊,請參閱 如何建立命令行預測器。