Ani*_*esh 17 command-line bash
在 Windows 命令行(powershell 和 cmd)中,当您Esc在一行中按下键时,您在提示符下输入的任何内容都会被删除。
我发现Esc
在 bash 提示符下按键没有任何作用。按Esc
然后backspace
删除一个单词,但必须为每个单词执行此操作。
我正在逐步学习 Bash,有时会在行的中间输入一些愚蠢的内容,并觉得最好从头开始输入。要做到这一点,按下backspace
是我迄今为止发现的唯一方法。
你做什么工作?
我知道clear
命令和Ctrl-L快捷方式,但我不是在谈论清除整个终端。就行了。
Ign*_*ams 16
你想要kill-whole-line
,但这在 bash 中默认不受约束。backward-kill-line
( CtrlX Backspace) 和unix-line-discard
( CtrlU) 都从当前点擦除到行首,因此只需转到行尾并使用其中一个即可。
为了稍微扩展 Ignacio Vazquez-Abrams 的回答,您可以Esc通过将kill-whole-line
toEsc与以下命令绑定,从bash 中的密钥获得(几乎)类似 Windows 的行为
bind '"\e":kill-whole-line'
Run Code Online (Sandbox Code Playgroud)
如果将该行添加到~/.inputrc
文件中,则绑定将在会话之间持续存在。
但是请注意,这是非常不标准的,因为 bash 实际上将该Esc键用作另一个修改键(如非持久性 Alt 或 Ctrl)。如果您查看现有键绑定列表(使用bind -P
),您可能会看到几个命令绑定到以“\e”开头的键组合(例如
"\eb": backward-word
Run Code Online (Sandbox Code Playgroud)
它设置组合Esc+B将光标移回最近的单词开头 - 更像Ctrl+ ←,除了如果您想连续多次执行它,您必须继续释放Esc(B当然还有 ) )。
这就解释了为什么我说你得到的行为几乎类似于 Windows:当你按下 时Esc,bash 会检查你是否将它与另一个键结合使用;因此,如果您将它绑定到kill-whole-line
,那么在按下(或者更确切地说,释放)Esc和 bash 为您清除线路之间会有一些延迟。
但是,如果您不关心任何这些,并且宁愿忍受延迟而不是重新训练自己以适应不同的击键,那么这是可以做到的。
(注意:这里的大部分信息都是我通过阅读 - 并按照 -这个答案中的链接获得的。)