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 参数是区分大小写的。 这意味着,可以为 CtrlX 和 Ctrl++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 。
配置 iTerm2 应用程序
在 iTerm.app 中从应用栏打开 “设置” 窗口。 选择 “配置文件 ”,然后选择要配置的配置文件。 选择配置选项的 “密钥 ”选项卡。 为左侧选项键和右选项键设置选择 Esc+ 选项。 此设置允许 ⌥ Option 键在 iTerm 应用程序中充当 Alt 。
注释
具体步骤可能因 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 平台上的键绑定可能有所不同。
MenuComplete
通过从可能的完成值的菜单中选择完成输入。
默认和弦: 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+可依次 选择下一个参数参数: myRGName
、 eastus
、 myVM
。
GotoBrace
将光标移动到匹配的括号。
默认和弦: Ctrl+]
该功能将光标移动到命令行上当前光标位置括号的匹配括号。 该函数适用于中括号([]
)、大括号({}
)和小括号(()
)。
DigitArgument
启动或累积一个数字参数,用于重复击键指定的次数。
默认和弦:Alt+0
到 Alt+9
例如,在命令行中键入 Alt+4+# 输入 ####
。