about_Tab_Expansion

简短说明

PowerShell 提供输入自动补全功能,以提供提示、启用发现和加快条目输入速度。 通过按 Tab 键,可自动补全命令名称、参数名称、参数值和文件路径。

长说明

Tab 扩展由内部函数 TabExpansion2 控制。 由于此函数可被修改或覆盖,所以此讨论可用作针对默认 PowerShell 配置的行为的指导。

还可以通过 PSReadLine 模块的预测 IntelliSense 功能修改 Tab 扩展行为。 有关详细信息,请参阅 预测 IntelliSense

Tab 键是 Windows 上的默认键绑定。 可以使用 PSReadLine 模块或托管 PowerShell 的应用程序更改密钥绑定。 在非 Windows 平台上,键绑定可能有所不同。 有关详细信息,请参阅 about_PSReadLine

注意

Tab 键扩展进程的一个限制是 Tab 键始终解释为尝试完成单词。 如果将命令示例复制并粘贴到 PowerShell 控制台中,请确保示例不包含选项卡。 如果这样做,结果将是不可预知的,几乎肯定不是你预期的。

文件和 cmdlet 名称自动补全

若要从可用选择中自动填充文件名或路径,键入部分名称并按下 Tab 键。 PowerShell 会自动将名称扩展至找到的第一个匹配项。 按 Tab 键会重复循环访问所有可用选项。

名称的 Tab 键扩展稍有不同。 若要在 cmdlet 名称上使用 Tab 键扩充,键入名称的整个第一部分(即谓词),然后是后跟的连字符。 你可以填入名称的更多内容以进行部分匹配。 例如,如果键入 get-co 并按 Tab 键,PowerShell 会自动将其 Get-Command 扩展到 cmdlet。 请注意,它还会将字母大小写更改为其标准窗体。 如果再次按 Tab 键,PowerShell 会将此替换为另一个唯一匹配的 cmdlet 名称 Get-Content

注意

从 PowerShell 7.0 开始, Tab 还会扩展缩写的 cmdlet 和函数。 例如,i-psdf<tab> 返回 Import-PowerShellDataFile

Tab 自动补全功能还可用于解析 PowerShell 别名和原生可执行文件。

你可以在同一行上重复使用 Tab 键扩展。 例如,可以通过输入以下内容在 Get-Content cmdlet 的名称上使用 tab 扩展:

示例

PS> Get-Con<Tab>

当你按下 Tab 键时,该命令扩展为:

PS> Get-Content

然后你可以部分指定“智能安装”日志文件的路径并再次使用选项卡扩展:

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 添加了对枚举选项卡完成的支持。 可以使用 Tab 补全来选择任何使用枚举的位置所需的值。 例如:

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 值增加了 Tab 键扩展。 例如,如果你键入以下变量定义:

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

Tab 键时,你将获得以下结果:

$flavor = 'Chocolate'

基于注释的关键字的 Tab 键自动补全

从 PowerShell 7.2 开始,针对 #requires 参数以及基于注释的帮助的关键字增加了 Tab 键自动补全支持。

#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

另请参阅