如何在 Windows 终端中跳转到命令的开头?

如何在 Windows 终端中跳转到命令的开头?

在 Linux 中,我可以通过按 跳到命令的开头 Ctrl-A Ctrl-E 按 跳到命令的结尾。但是,它与 Windows Termianl 不兼容。我该怎么做?是否可以将此快捷方式添加到列表中?

答案1

假设您已输入命令(或使用命令历史记录将其作为当前命令),Home并且End应分别将光标移至命令行的开头或结尾。 (并且Ctrl+Ctrl+将带您到命令中的上一个/下一个单词。)

答案2

让我从以下开始:是的,只需使用HomeEnd绝对是这里最简单的解决方案。

是否可以将此快捷方式添加到列表中?

你肯定重新绑定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(" ")
}

相关内容