我正在尝试模仿 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+映射U
到
Ctrl+ 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 文档: