在Windows命令行(powershell和cmd)中,当您Esc在一行上按键时,将删除您在提示符下键入的任何内容。
我发现Esc
在bash提示符下按键无济于事。按下Esc
然后backspace
删除一个单词,但是必须对每个单词执行此操作。
我正在逐步学习Bash,有时在行的中间输入一些愚蠢的字,觉得最好从头开始输入。为此,backspace
直到现在我才发现按。
你是做什么?
我知道clear
命令和Ctrl-L快捷方式,但是我不是在谈论清除整个终端。只是线。
在Windows命令行(powershell和cmd)中,当您Esc在一行上按键时,将删除您在提示符下键入的任何内容。
我发现Esc
在bash提示符下按键无济于事。按下Esc
然后backspace
删除一个单词,但是必须对每个单词执行此操作。
我正在逐步学习Bash,有时在行的中间输入一些愚蠢的字,觉得最好从头开始输入。为此,backspace
直到现在我才发现按。
你是做什么?
我知道clear
命令和Ctrl-L快捷方式,但是我不是在谈论清除整个终端。只是线。
Answers:
您需要kill-whole-line
,但默认情况下,bash中未绑定此功能。backward-kill-line
(CtrlX Backspace)和unix-line-discard
(CtrlU)都从当前点擦除到行的开头,因此只需转到行的末尾并使用其中之一即可。
bind -P
。我想Ctrl-U
,那Ctrl-Y
是唯一的选择。
您可以使用Ctrl+ C放弃输入的内容并获得一个空的新命令行,请参阅CTRL + C是否不正确,无法用于返回命令行?。
要稍微扩展一下Ignacio Vazquez-Abrams的答案,您可以Esc通过使用以下命令绑定kill-whole-line
到bash中的键来获得(几乎)类似于Windows的行为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会检查您是否将它与另一个键结合使用;因此,如果您将其绑定到kill-whole-line
,则在按下(或更确切地说,释放)Esc和bash为您清除行之间会有一些延迟。
但是,如果您不关心任何这些,而是宁愿拖延时间而不是将自己重新训练为其他按键,那么可以这样做。
(注意:我在这里获得的许多信息是阅读并遵循此答案中的链接所获得的。)
[19;
为类似的转义代码。最后,我发现映射"\e\e"
到kill-whole-line
一个不错的折衷方案(即,点按两次Esc以清除该行)。
Esc
无论如何我经常打几次,所以我可以尝试一下。我目前将其绑定到Ctrl
+,Del
但我永远不会记住。