about_Tab_Expansion

简短说明

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

长说明

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

还可以通过 PSReadLine 模块的预测 IntelliSense 功能修改选项卡扩展行为。 有关详细信息,请参阅 预测 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 键循环浏览对某些参数有效的可能值列表。 有关详细信息,请参阅 about_Functions_Argument_Completion

枚举值完成

PowerShell 7.0 添加了对枚举的 Tab 补全的支持。 可以使用 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 添加了选项卡扩展。 例如,如果键入以下变量定义:

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

点击 Tab 键时,将得到以下结果:

$flavor = 'Chocolate'

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

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

语句的示例#requires

#requires -<Ctrl-Space>

菜单扩展显示以下参数选项:

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

基于注释的帮助示例

<#
    .<Ctrl-Space>

菜单扩展显示以下关键字 (keyword) 选项:

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

另请参阅