Windows shell Escape 键(删除整行)相当于 Bash 中的键

Windows shell Escape 键(删除整行)相当于 Bash 中的键

在 Windows 命令行(powershell 和 cmd)中,当您Esc在一行上按 键时,您在提示符处输入的任何内容都会被删除。

我发现Esc在 bash 提示符下按 键没有任何作用。按Esc,然后backspace删除一个单词,但必须对每个单词执行此操作。

我正在逐步学习 Bash,有时会在行中间输入一些愚蠢的内容,并觉得最好从头开始再次输入。要做到这一点,按下backspace是我迄今为止发现的唯一方法。

你做什么工作?

我知道clear命令和Ctrl-L快捷方式,但我不是在谈论清除整个终端。只是线。

答案1

你要kill-whole-line,但这在 bash 中默认不受约束。backward-kill-lineCtrlX Backspace) 和unix-line-discard( CtrlU) 都从当前点擦除到行首,因此只需转到行尾并使用其中一个即可。

答案2

您可以使用Ctrl+C放弃您正在输入的任何内容并获得一个空的新命令行,请参阅使用 CTRL+C 返回命令行是否不正确?

答案3

Ctrl+a转到行首并Ctrl+k删除到行尾

答案4

为了稍微扩展一下 Ignacio Vazquez-Abrams 的答案,您可以通过使用以下命令将Esc绑定到 bash 中的键来获得(几乎)类似 Windows 的行为kill-whole-lineEsc

bind '"\e":kill-whole-line'

如果您将该行添加到~/.inputrc文件中,绑定将在会话之间持续存在。

但请注意,这是非常非标准,因为 bash 实际上使用该Esc键作为另一个修改键(如非持久性 Alt 或 Ctrl)。如果您查看现有按键绑定列表(带有bind -P),您可能会看到几个绑定到以“\e”开头的按键组合的命令(例如

"\eb": backward-word

它设置组合Esc+B将光标移回最近的单词开头 – 与Ctrl+类似,但如果您想连续多次执行此操作,则必须不断释放Esc(当然还有) B)。

这解释了为什么我说你得到的行为是几乎与 Windows 类似:当您按下 时Esc,bash 会检查您是否将其与另一个键组合使用;因此,如果您将其绑定到,则在按下(或者更确切地说,释放)和 bash 为您清除线路kill-whole-line之间会有一点延迟。Esc

但是,如果您不关心这些,并且宁愿忍受延迟也不愿重新训练自己使用不同的击键,那么这是可以完成的。

(注:这里的大部分信息是我通过阅读并点击以下链接获得的:这个答案.)

相关内容