使用 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 文档。 例如, 2 键的名称 [System.ConsoleKey]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 参数是区分大小写的。 这意味着,可以为 CtrlXCtrl++x 创建不同的绑定。

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

what-is-key:

点击 Backspace 密钥时,会收到以下响应:

Backspace: BackwardDeleteChar - Delete the character before the cursor

非 Windows 计算机上的密钥处理程序

键盘生成的键代码可能有所不同,具体取决于所使用的作系统和终端应用程序。

macOS

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

配置终端应用程序

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

Terminal.app 设置的屏幕截图。

配置 iTerm2 应用程序

在 iTerm.app 中从应用栏打开 “设置” 窗口。 选择 “配置文件 ”,然后选择要配置的配置文件。 选择配置选项的 “密钥 ”选项卡。 为左侧选项键右选项键设置选择 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 键完成输入。 在浏览菜单选项时,所选命令的帮助将显示在菜单下方。

清屏

此函数清除屏幕,类似于cls命令或clear命令。

默认和弦: Ctrl+l

选择命令参数

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

默认和弦: Alt+a

在历史记录中,你可能希望使用不同的参数值再次运行命令。 可以使用和弦循环遍历每个参数,并根据需要更改值。

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

Alt+可依次 选择下一个参数参数: myRGNameeastusmyVM

GotoBrace

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

默认和弦: Ctrl+]

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

DigitArgument

启动或累积一个数字参数,用于重复击键指定的次数。

默认和弦:Alt+0Alt+9

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

另请参阅