在 Windows 命令行(powershell 和 cmd)中,当您Esc在一行上按 键时,您在提示符处输入的任何内容都会被删除。
我发现Esc
在 bash 提示符下按 键没有任何作用。按Esc
,然后backspace
删除一个单词,但必须对每个单词执行此操作。
我正在逐步学习 Bash,有时会在行中间输入一些愚蠢的内容,并觉得最好从头开始再次输入。要做到这一点,按下backspace
是我迄今为止发现的唯一方法。
你做什么工作?
我知道clear
命令和Ctrl-L快捷方式,但我不是在谈论清除整个终端。只是线。
答案1
你要kill-whole-line
,但这在 bash 中默认不受约束。backward-kill-line
(CtrlX Backspace) 和unix-line-discard
( CtrlU) 都从当前点擦除到行首,因此只需转到行尾并使用其中一个即可。
答案2
您可以使用Ctrl+C放弃您正在输入的任何内容并获得一个空的新命令行,请参阅使用 CTRL+C 返回命令行是否不正确?。
答案3
Ctrl+a转到行首并Ctrl+k删除到行尾
答案4
为了稍微扩展一下 Ignacio Vazquez-Abrams 的答案,您可以通过使用以下命令将Esc绑定到 bash 中的键来获得(几乎)类似 Windows 的行为kill-whole-line
Esc
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
但是,如果您不关心这些,并且宁愿忍受延迟也不愿重新训练自己使用不同的击键,那么这是可以完成的。
(注:这里的大部分信息是我通过阅读并点击以下链接获得的:这个答案.)