取消 shell 命令行调用

取消 shell 命令行调用

按箭头键key up将会调用您之前在 shell 中使用过的命令。

但是,如果您在浏览命令历史记录的过程中,决定要输入自己的新命令,您会怎么做?

key down一直按箭头太麻烦了,按了ESC也不会像Windows那样清除命令(我是从Windows后台过来的)。

那么,如何立即清除命令?到目前为止,我已经在 Google 上搜索过,但只找到CTRL+C可能取消并转到新行。这是唯一的方法吗,还是有更好的方法,比如ESC在 Windows 中直接清除?谢谢。

答案1

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

答案2

为了bash

您需要与操作绑定的按键序列end-of-history。默认情况下,根据 Bash 用户手册第 8.4.2 节的规定,这是Meta+ >,其中Meta是终端或终端仿真程序上的“meta”修饰键。(请参阅您的终端文档和设置以了解适当的选择。)

end-of-history直接带您到历史记录列表的末尾 - 即返回到您在滚动回历史记录之前最初输入的行。

对于 Z Shell:

您需要绑定到end-of-buffer-or-history小部件的按键序列。默认情况下,根据 Z Shell 参考手册第 18.6.2 节,这Esc>在键盘映射中emacs。(请注意,这是具体来说前缀的Esc,而不是Meta,即使您的终端仿真器可能恰好映射Meta到前缀的Esc。)

end-of-buffer-or-history仅当您在调用时位于缓冲区末尾时,才会将您带到历史记录列表的末尾。因此,如果您位于缓冲区中间,则必须按下该键序列两次:第一次用于到达缓冲区末尾,第二次用于到达历史记录末尾。

答案3

除了CTRL+C您提到的之外。我发现按下ESC然后Backspace会删除该行(某些字符除外)直到非字母字符。

答案4

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

^C

相关内容