在 Linux 中,我可以通过按 跳到命令的开头 Ctrl-A , Ctrl-E 按 跳到命令的结尾。但是,它与 Windows Termianl 不兼容。我该怎么做?是否可以将此快捷方式添加到列表中?
答案1
假设您已输入命令(或使用命令历史记录将其作为当前命令),Home并且End应分别将光标移至命令行的开头或结尾。 (并且Ctrl+←和Ctrl+→将带您到命令中的上一个/下一个单词。)
答案2
让我从以下开始:是的,只需使用Home和End绝对是这里最简单的解决方案。
是否可以将此快捷方式添加到列表中?
你肯定能重新绑定ctrl+a
以发送与 相同的键Home(与 类似ctrl+e
)。您可以添加sendInput
操作到您的设置中,设置以便ctrl+a
/e
发送与 home/end 按键相同的一组字符:
"actions": [
{ "keys": "ctrl+a", "command": { "action": "sendInput", "input": "\u001b[H" }, "name": "home" },
{ "keys": "ctrl+e", "command": { "action": "sendInput", "input": "\u001b[E" }, "name": "end" },
]
不过,我并不完全推荐这样做。这样做会让ctrl+a
/e
永久反弹到 home/end - 如果你真的需要其他 CLI 应用程序中的ctrl+a
/ e
,那你就倒霉了。我还怀疑这在你运行 时不起作用vim
。也许你可以发送更复杂的序列会工作,但是
答案3
按键是与 Windows 终端兼容;它们不兼容的是命令外壳在该终端内运行。不过,PowerShell 允许您通过脚本以类似于 Bash 的方式定义自定义键绑定$profile
:
Set-PSReadLineKeyHandler -Chord Ctrl-a -Function BeginningOfLine
Set-PSReadLineKeyHandler -Chord Ctrl-e -Function EndOfLine
Cmd.exe 没有等效项(有点像 Linux 上的 /bin/sh 根本没有行编辑)。
如果您仍在使用“默认” PowerShell 5.0,则需要额外注意:
Set-PSReadlineKeyHandler -Chord Shift+SpaceBar -ScriptBlock {
[Microsoft.Powershell.PSConsoleReadLine]::Insert(" ")
}