about_Tab_Expansion

簡短描述

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

詳細描述

Tab 展開是由內部函數 TabExpansion2 所控制。 由於此函式可以修改或覆寫,因此此討論是預設 PowerShell 組態行為的指南。

PSReadLine 模組的預測性 IntelliSense 功能也可以修改索引標籤擴充行為。 如需詳細資訊,請參閱 預測性 IntelliSense

Tab 鍵是 Windows 上的預設按鍵系結。 您可以使用 PSReadLine 模組或裝載 PowerShell 的應用程式來變更金鑰系結。 非 Windows 平臺上的keybinding不同。 如需詳細資訊,請參閱 about_PSReadLine

注意

索引標籤展開程式的其中一個限制是索引標籤一律會解譯為嘗試完成單字。 如果您將命令範例複製並貼到PowerShell控制台中,請確定範例不包含索引標籤。 如果這樣做,結果將會是無法預測的,而且幾乎可以肯定不是您預期的結果。

檔案和 Cmdlet 名稱完成

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

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

注意

從 PowerShell 7.0 起, Tab 也會展開縮寫的 Cmdlet 和函式。 例如 i-psdf<tab> 會傳回 Import-PowerShellDataFile

索引標籤自動完成也適用於解析 PowerShell 別名和原生可執行檔。

您可以在相同的行上重複使用索引標籤展開。 例如,您可以輸入下列命令,在 Cmdlet 名稱 Get-Content 上使用索引標籤展開:

範例

PS> Get-Con<Tab>

當您按下 Tab 鍵時,命令會展開為:

PS> Get-Content

然後,您可以部分指定 Active Setup 記錄檔的路徑,然後再次使用索引卷標展開:

PS> Get-Content c:\windows\acts<Tab>

當您按下 Tab 鍵時,命令會展開為:

PS> Get-Content C:\windows\actsetup.log

PSReadLine 也有功能表完成功能。 Windows 上的預設按鍵系結為 Ctrl+空格鍵。

PS> fore<Ctrl-Space>

當您按 Ctrl+空格鍵時,PowerShell 會將相符值的完整清單顯示為功能表:

PS> foreach
foreach         ForEach-Object  foreach.cmd

在此範例中,字串 'fore' 會比對 foreach (PowerShell 別名)、 ForEach-Object (Cmdlet) 和 foreach.cmd (原生命令)。 使用箭號鍵來選取您想要的值。

參數自變數完成

Tab 鍵自動完成也可以完成參數自變數。 您可以使用 Tab 鍵來迴圈查看某些參數有效之可能值的清單。 如需詳細資訊,請參閱 about_Functions_Argument_Completion

列舉值完成

PowerShell 7.0 已新增對索引標籤完成列舉的支援。 您可以使用索引標籤自動完成來選取您想要的任何位置使用列舉的值。 例如:

enum Suits {
    Clubs = 0
    Diamonds = 1
    Hearts = 2
    Spades = 3
}

[Suits]$suit = 'c<Tab>

列舉值是字串,因此要完成的值必須以單引號或雙引號字元開頭。

當您按下 Tab 鍵時,會取得下列結果:

[Suits]$suit = 'Clubs'

Tab 鍵自動完成也適用於 .NET 列舉。

[System.IO.FileAttributes]$attr = 'S<Tab><Tab>

Tab 鍵兩次迴圈查看以字母 S開頭的兩個值。 最終結果是:

[System.IO.FileAttributes]$attr = 'System'

從 PowerShell 7.0 開始,已針對 指派給變數時 的值 ValidateSet 新增索引標籤展開。 例如,如果您輸入下列變數定義:

[ValidateSet('Chocolate', 'Strawberry', 'Vanilla')]
[string]$flavor = 'Strawberry'
$flavor = <tab>

當您叫用 Tab 鍵時,會收到下列結果:

$flavor = 'Chocolate'

批註型關鍵詞的索引標籤完成

從 PowerShell 7.2 開始,已新增參數的 #requires 索引標籤完成支援,以及批註型說明的關鍵詞。

語句的 #requires 範例

#requires -<Ctrl-Space>

選單展開會顯示下列參數選項:

#requires -<Ctrl-Space>
Modules     PSEdition     RunAsAdministrator    Version

以批注為基礎的說明範例

<#
    .<Ctrl-Space>

選單展開會顯示下列關鍵字選項:

 <#
    .COMPONENT
COMPONENT      EXTERNALHELP           FUNCTIONALITY     NOTES         REMOTEHELPRUNSPACE
DESCRIPTION    FORWARDHELPCATEGORY    INPUTS            OUTPUTS       ROLE
EXAMPLE        FORWARDHELPTARGETNAME  LINK              PARAMETER     SYNOPSIS

另請參閱