使用 PSReadLine 键处理程序

PSReadLine 模块提供了一些键处理程序,可以将 PSReadLine 函数映射到键盘组合按键。 键盘组合按键是同时按下的一个或多个击键的序列。 例如,组合按键 Ctrl+空格键是同时按下的 Ctrl 键和空格键的组合。 PSReadLine 函数是可在命令行上执行的预定义操作。 例如,使用 MenuComplete 函数,可以从菜单中的选项列表中进行选择,以完成命令行上的输入。

PSReadLine 有一些默认绑定的预定义键处理程序。 你还可以定义自己的自定义键处理程序。 运行以下命令,列出当前定义的键处理程序。

Get-PSReadLineKeyHandler

此外,还可以获取可绑定到组合按键的所有未绑定 PSReadLine 函数的列表。

Get-PSReadLineKeyHandler -Unbound

可以使用 Set-PSReadLineKeyHandler cmdlet 将函数绑定到键处理程序。 以下命令将 MenuComplete 函数绑定到组合按键 Ctrl+空格键

Set-PSReadLineKeyHandler -Chord 'Ctrl+Spacebar' -Function MenuComplete

查找键名称和和组合按键绑定

组合按键中键的名称由 [System.ConsoleKey] 枚举定义。 有关详细信息,请参阅 System.ConsoleKey 文档。 例如,[System.ConsoleKey]2 键的名称是 D2,而数字键盘上 2 键的名称是 NumPad2。 可以使用 [System.Console]::ReadKey() 方法查找所按下的键的名称。

[System.Console]::ReadKey()

以下输出显示了 ReadKey() 方法为 Ctrl+2 组合按键返回的信息。

KeyChar Key Modifiers
------- --- ---------
        D2   Control

对于 PSReadLine 键处理程序 cmdlet,此组合按键表示为 Ctrl+D2。 以下示例将此组合按键绑定到函数。

Set-PSReadLineKeyHandler -Chord 'Ctrl+D2' -Function MenuComplete

可以将多个组合按键绑定到单个函数。 默认情况下,BackwardDeleteChar 函数绑定到两个组合按键。

Get-PSReadLineKeyHandler -Chord Backspace, Ctrl+h
Key       Function           Description
---       --------           -----------
Backspace BackwardDeleteChar Delete the character before the cursor
Ctrl+h    BackwardDeleteChar Delete the character before the cursor

注意

Chord 参数区分大小写。 也就是说,可以为 Ctrl+XCtrl+x 创建不同的绑定。

在 Windows 上,还可以使用 Alt+? 组合按键来显示绑定到你输入的下一个组合按键的函数。 键入 Alt+? 时,你会看到以下提示:

what-is-key:

按下 Backspace 键时,你会收到以下响应:

Backspace: BackwardDeleteChar - Delete the character before the cursor

非 Windows 计算机上的键处理程序

根据所使用的操作系统和终端应用程序,键盘生成的键代码可能会有所不同。

macOS

Macintosh 键盘不像 Windows 和 Linux 系统那样具有 Alt 键。 而是具有 ⌥ Option 键。 macOS 使用此键的方式不同于其他系统上的 Alt 键。 但是,可以在 macOS 上配置终端和 iTerm2 应用程序,将其视为 Alt 键。

配置终端应用程序

在 Terminal.app 中,从应用栏打开“设置”窗口。 选择“配置文件”,然后选择要配置的配置文件。 选择配置选项的“键盘”选项卡。 在键列表下方,选择“将 Option 用作元键”设置。 此设置允许 ⌥ Option 键在终端应用程序中充当 Alt

Terminal.app 设置的屏幕截图。

配置 iTerm2 应用程序

在 iTerm.app 中,从应用栏打开“设置”窗口。 选择“配置文件”,然后选择要配置的配置文件。 选择配置选项的“键”选项卡。 为“左 Option 键”和“右 Option 键”设置选择“Esc+”选项。 此设置允许 ⌥ Option 键在 iTerm 应用程序中充当 Alt

iTerm.app 设置的屏幕截图。

注意

具体步骤可能因 macOS 版本和终端应用程序而异。 这些示例是在 macOS Ventura 13.2.1 和 iTerm2 v3.4.16 上捕获的。

Linux

在 Linux 平台上,生成的键代码可能与其他系统不同。 例如:

  • Ctrl+[Escape 相同

  • Ctrl+空格键Ctrl+D2 生成键代码。 如果要映射函数 Ctrl+空格键,必须使用组合按键 Ctrl+D2

    Set-PSReadLineKeyHandler -Chord 'Ctrl+D2' -Function MenuComplete
    

使用 ReadKey() 方法验证键盘生成的键代码。

常用键处理程序

下面是 Windows 上默认绑定的一些常用键处理程序。 请注意,键绑定在非 Windows 平台上可能会有所不同。

通过从可能的完成值菜单中进行选择来完成输入。

默认组合按键:Ctrl+Spacebar

以下示例显示了以 select 开头的命令可能完成的菜单。

PS C:\> select<Ctrl+Spacebar>
select                   Select-Object            Select-PSFPropertyValue  Select-Xml
Select-AzContext         Select-PSFConfig         Select-PSMDBuildProject
Select-AzSubscription    Select-PSFObject         Select-String

Select-Object

使用箭头键选择所需的完成。 按 Enter 键完成输入。 当你移动浏览所选内容时,菜单下方会显示针对所选命令的帮助。

ClearScreen

此函数将清除屏幕,作用类似于 clsclear 命令。

默认组合按键:Ctrl+l

SelectCommandArgument

选择命令行上的下一个参数。

默认组合按键:Alt+a

你的历史记录中可能有要使用不同的参数值再次运行的命令。 可以使用组合按键循环访问每个参数,并根据需要更改值。

New-AzVM -ResourceGroupName myRGName -Location eastus -Name myVM

Alt+a 依次选择下一个参数自变量:myRGNameeastusmyVM

GotoBrace

将光标移动到匹配的大括号。

默认组合按键:Ctrl+]

此函数将光标移动到与命令行上当前光标位置的大括号匹配的右大括号。 该函数适用于中括号 ([])、大括号 ({}) 和小括号 (())。

DigitArgument

启动或累积数值参数,用于重复执行指定次数的击键操作。

默认组合按键:Alt+0Alt+9

例如,键入 Alt+4+# 可在命令行上输入 ####

另请参阅