如何更改 Windows 终端中“删除光标前的所有字符”的键绑定?

如何更改 Windows 终端中“删除光标前的所有字符”的键绑定?

我正在尝试模仿 Bash 的键盘快捷键行为到 Windows 终端。

在 bash 中,“Ctrl+U”表示“删除光标前的所有字符”,

在 Windows 终端中,“Ctrl+Home”可执行此操作(https://superuser.com/a/1148782/976753),

如何在 Windows 终端中将默认键绑定从“Ctrl+Home”更改为“Ctrl+U”?

答案1

Windows 终端不处理此类快捷方式。

在使用面向行输入的程序(例如 Cmd.exe)中,它发生在 Conhost(或 WT 的后继 OpenConsole)中,类似于 Unix tty 层为熟模式程序提供基本行编辑的方式。然而,与 Unix ttys 不同的是,Conhost/OpenConsole 中的快捷方式是完全不可定制

在使用基于字符的输入的程序(如 PowerShell 和 Bash)中,所有此类快捷方式均由接收输入的程序处理。例如,PowerShell 使用“PSReadline”,它实际上是 Bash 使用的“readline”库的克隆。

使用 PowerShell,使用Set-PSReadlineKeyHandler将 Ctrl+U 绑定到BackwardKillInput 功能(默认情况下应该已经绑定,但如果没有,请编辑文件$Profile以实现它)。

答案2

您可以使用免费自动热键

以下示例脚本将把 Ctrl+映射UCtrl+ Home,但仅适用于可执行文件WindowsTerminal.exe

#IfWinActive, ahk_exe WindowsTerminal.exe
^u::Send, ^{Home}

安装 AutoHotKey 后,将上述文本放入一个.ahk文件中并双击进行测试。您可以通过右键单击托盘栏中的绿色 H 图标并选择退出来停止脚本。要让它在登录时运行,请将其放在 的启动组中
C:\Users\USER-NAME\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

有用的 AutoHotkey 文档:

相关内容