取消shell命令行调用

按下箭头key up将会回想起以前在shell中使用过的命令。

但是,如果你在浏览命令历史的一半,并且决定要input自己的新命令,你会怎么做?

一直按下箭头key down太麻烦了。 按下ESC将不会清除像Windows一样的命令(我来自Windows后台)。

那么,如何立即清除命令呢? 我已经search到目前为止,但只有发现CTRL+C可能会取消并转到新行。 是唯一的方式,还是有一个更好的方式,如Windows中的ESC直接清除? 谢谢。

你需要kill-whole-line ,但是这在bash中并没有被默认绑定。 backward-kill-lineCtrl X Backspace )和unix-line-discardCtrl U )都从当前点擦除到行的开头,所以只要到行尾并使用。

对于bash

您需要绑定到end-of-history操作的击键序列。 默认情况下,根据Bash用户手册的第8.4.2节,这是Meta + > ,其中Meta是您的terminal或terminal仿真器程序中的“meta”修饰键。 (请查阅您的terminal文档和设置以获得适当的select。)

end-of-history将您直接带到历史logging列表的最后 – 也就是回到最初input的行,然后再滚动回历史logging。

对于Z壳牌:

您需要绑定到end-of-buffer-or-history窗口小部件的击键序列。 默认情况下,根据Z Shell参考手册的§18.6.2,这是emacs键盘映射中的Esc > 。 (请注意,即使您的terminal模拟器可能碰巧将Meta映射到前缀Esc ,这也是特定的前缀Esc ,而不是Meta 。)

如果在调用end-of-buffer-or-history的末尾只会将您带到历史列表的末尾。 所以如果你在缓冲区中间,你必须按两次按键:一次到达缓冲区的末尾,第二次到达历史的结尾。

除了你提到的CTRL + C。 我发现按ESC ,然后退格键会删除该行(不包括一些字符),直到一个非字母字符。

如果您正在使用“set -o vi”您可以执行以下操作:

 ^C