Share via


在殼層中使用 Tab 鍵自動完成

PowerShell 提供輸入的完成,以提供提示、啟用探索,以及加速輸入輸入。 按下 Tab 鍵即可完成命令名稱、參數名稱、自變數值和檔案路徑。

Tab 鍵是 Windows 上的預設按鍵系結。 PSReadLine 也提供MenuComplete系結至 Ctrl+空格鍵的函式。 函 MenuComplete 式會顯示命令列下方相符完成的清單。

您可以使用 PSReadLine Cmdlet 或裝載 PowerShell 的應用程式來變更這些金鑰系結。 非 Windows 平臺上的 Keybinding 可能不同。 如需詳細資訊,請參閱 about_PSReadLine_Functions

內建索引標籤自動完成功能

PowerShell 已針對命令行體驗的許多層面啟用索引標籤自動完成。

檔名完成

若要自動填入可用選項中的檔名或路徑,請輸入名稱的一部分,然後按 Tab 鍵。 PowerShell 會自動將名稱展開至找到的第一個相符專案。 按下 Tab 鍵會再次迴圈查看每個按鍵按下的所有可用選項。

命令和參數名稱完成

Cmdlet 名稱的索引標籤擴充稍微不同。 若要在 Cmdlet 名稱上使用索引標籤展開,請輸入名稱的整個第一個部分(動詞命令),以及後面接著的連字元。 您可以填入更多部分相符的名稱。 例如,如果您輸入 get-co ,然後按 Tab 鍵,PowerShell 會自動將此項目展開至 Get-Command Cmdlet(請注意,它也會將字母大小寫變更為標準格式)。 如果您再次按 Tab 鍵,PowerShell 會以唯一的其他相符 Cmdlet 名稱取代這個 。 Get-Content 索引標籤自動完成也適用於解析 PowerShell 別名和原生可執行檔。

下圖顯示索引標籤和功能表完成的範例。

索引標籤和功能表完成範例

其他索引標籤完成增強功能

每個新版本的PowerShell都包含索引標籤完成的改善,可修正 Bug 並改善可用性。

PowerShell 7.0

  • 索引標籤自動完成會解析列舉或類型限制的變數指派
  • Tab 鍵自動完成會展開縮寫的 Cmdlet 和函式。 例如, i-psdf<tab> 傳回 Import-PowerShellDataFile

PowerShell 7.2

  • 修正未本地化 about* 主題的索引標籤完成
  • 修正在完成時將噴濺視為位置參數
  • 新增批注型說明關鍵詞的完成
  • 新增語句的 #requires 完成
  • Cmdlet 的 Format-* View 參數新增索引標籤自動完成
  • 新增對類別型自變數完成項的支援

PowerShell 7.3

  • 修正針對 指定的文本區塊內的索引標籤自動完成 ValidateScriptAttribute
  • 在和 之後 break 新增迴圈標籤的索引標籤自動完成 continue
  • 改善多個案例中的哈希表完成
    • 參數展開
    • 的自變數參數Invoke-CimMethod
    • FilterHashtable 參數 Get-WinEvent
    • CIM Cmdlet 的屬性參數
    • 從成員完成案例中移除重複專案
  • 支援網路共用中的正斜線 (UNC 路徑) 完成
  • 改善成員自動完成
  • 將完成優先順序 ValidateSet 設定為參數的列舉
  • 使用型別參數新增泛型方法的類型推斷支援
  • 改善類型推斷和完成
    • 允許在完成結果中顯示方法 ForEach-Object -MemberName
    • 防止在傳回 void 的表示式上完成 ,例如 ([void]("")
    • 允許非預設類別建構函式在類別完成以 AST 為基礎時顯示

增強命令參數索引標籤完成的其他方式

內建索引標籤擴充是由內部函數 TabExpansionTabExpansion2 所控制。 您可以建立函式或模組來取代這些函式的預設行為。 您可以藉由搜尋 TabExpansion 關鍵詞,在 PowerShell 資源庫 中找到範例。

ValidateSet搭配參數使用 或 ArgumentCompletions 屬性

屬性 ArgumentCompletions 可讓您將索引標籤自動完成值新增至特定參數。 屬性 ArgumentCompletions 類似於 ValidateSet。 這兩個屬性都會在使用者按下參數名稱之後的 Tab 鍵時顯示值清單。 不過,不同於 ValidateSet,不會驗證值。

如需詳細資訊,請參閱

ArgumentCompleter使用屬性或Register-ArgumentCompleter搭配參數

自變數完成器是腳本區塊或函式,可為參數值提供動態索引標籤完成。

屬性 ArgumentCompleter 可讓您註冊函式,為 參數提供索引標籤完成值。 自變數完成函式必須可供包含 具有 屬性之參數的函式使用 ArgumentCompleter 。 函式通常會在相同的腳本或模組中定義。

如需詳細資訊,請參閱 ArgumentCompleter

Cmdlet 會在 Register-ArgumentCompleter 運行時間針對您指定的任何命令,將腳本區塊註冊為自變數完成函式。 這可讓您定義腳本或模組之外或原生命令的自變數完成項。 如需詳細資訊,請參閱 Register-ArgumentCompleter

PSReadLine 中的預測性 IntelliSense

PSReadLine 2.1.0 引進了 預測性 IntelliSense 功能。 預測性 IntelliSense 會根據 PSReadLine 歷程記錄中的專案,提供完整命令的建議。

PSReadLine 2.2.2 藉由新增使用進階邏輯提供完整命令建議之外掛程式模組的支援,來擴充預測性 IntelliSense 的強大功能。 Az.Tools.Predictor 模組是預測性 IntelliSense 的第一個外掛程式。 它會使用 機器學習 來預測您想要執行的 Azure PowerShell 命令,以及您想要使用的參數。

如需詳細資訊,請參閱 使用預測值