按箭头键key up
将会调用您之前在 shell 中使用过的命令。
但是,如果您在浏览命令历史记录的过程中,决定要输入自己的新命令,您会怎么做?
key down
一直按箭头太麻烦了,按了ESC
也不会像Windows那样清除命令(我是从Windows后台过来的)。
那么,如何立即清除命令?到目前为止,我已经在 Google 上搜索过,但只找到CTRL+C
可能取消并转到新行。这是唯一的方法吗,还是有更好的方法,比如ESC
在 Windows 中直接清除?谢谢。
答案1
你要kill-whole-line
,但在 bash 中默认不受此约束。backward-kill-line
(CtrlX 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