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。 您可以按 InlineView 鍵在 和 ListView 之間切換。 您也可以使用的 Set-PSReadLineOption 參數來變更檢視。
管理預測性智能感知
要使用 Predictive IntelliSense,必須安裝較新的 PSReadLine 。 為了獲得最佳結果,請安裝最新版的模組。
使用 Microsoft.PowerShell.PSResourceGet 模組安裝 PSReadLine:
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,且在 PowerShell 中執行的 PSReadLine 早於 7.2,PredictionSource 會設定為
History - 如果不支援 VT,PredictionSource 會設定為
None。
使用下列命令來檢視目前的設定:
Get-PSReadLineOption | Select-Object -Property PredictionSource
您可以使用 Cmdlet 搭配 Set-PSReadLineOption 參數來變更預測來源。
PredictionSource 可以設定為:
NoneHistoryPluginHistoryAndPlugin
備註
以歷程記錄為基礎的預測來自 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 會在游標位於目前編輯行結尾時,接受內嵌建議的下一個字。 您可以將其他索引鍵系結至 AcceptSuggestion 和 AcceptNextSuggestionWord ,以取得類似的功能。 例如,你可能想讓 RightArrow 接受內嵌建議的下一個字,而不是整個建議行。
Set-PSReadLineKeyHandler -Chord "RightArrow" -Function ForwardWord
使用其他預測子外掛程式
Az.Tools.Predictor 模組是預測性 IntelliSense 的第一個外掛程式。 它會使用 Machine Learning 來預測您想要執行的 Azure PowerShell 命令,以及您想要使用的參數。 如需詳細資訊和安裝指示,請參閱 宣佈 Az.Tools.Predictor 正式運作。
CompletionPredictor 模組會為任何可以在 PowerShell 中使用 Tab 鍵完成的項目,新增 IntelliSense 互動體驗。 將 PSReadLine 設定為 InlineView,您會取得一般索引標籤完成體驗。 當您切換至 ListView時,您會取得 IntelliSense 體驗。 您可以從 PowerShell 資源庫安裝 CompletionPredictor 模組。
使用 CompletionPredictor 的 PowerShell 智能感知功能
如先前所述, ListView 會顯示預測的來源。 如果你安裝了多個外掛,預測結果會依來源分組,歷史 資料排在最前面,然後是每個外掛依載入順序排列。
建立您自己的預測工具模組
您可以使用 C# 撰寫自己的預測工具,以建立已編譯的 PowerShell 模組。 模組必須實作 System.Management.Automation.Subsystem.Prediction.ICommandPredictor 介面。 這個介面會宣告用來查詢預測結果的方法,並提供意見反應。
如需詳細資訊,請參閱 如何建立命令行預測器。