如何在终端中清除/删除当前行?

1160
如果我在终端中输入一行文本作为命令,是否有快捷键或者其他方式可以清除/删除这一行?
例如,如果我的当前行/命令非常长,像这样:
> git log --graph --all --blah..uh oh i want to cancel and clear this line <cursor is here now>

是否有快捷键或命令可以从上方进入以下内容:

>
通常我会按下 键,如果我的当前命令是历史记录中全新的一条,它将清除该命令。但是,如果我正在通过 键浏览我的命令历史并开始编辑或使用这些命令,则 只会将提示符更改为历史记录中下一个最新的命令,因此,除非我多次按下 ,否则它不起作用。

11
这是需要翻译的内容:Shortcuts to Move Faster in Bash Command Line 这个页面更具说明性和更好地解释了,我认为。 - Gab是好人
2
请参考以下内容:FYI 如何清除Windows命令提示符的当前行? - Franck Dernoncourt
1
可能是在bash中,如何清除当前输入?的重复问题。 - Cas
你可以在这里找到解决问题的方法:https://askubuntu.com/questions/470966/shortcut-to-clear-command-line-terminal - user15082770
有人应该整理一张快速参考表,列出前20种shell(bash,zsh等等)和前3种操作系统(*nix,macOS和Windows)的重要快捷键。那将是一个很好的资源。 - stevec
16个回答

2178

Ctrl+U 可以清除到输入的开头。

Ctrl+W 可以删除一个单词。

也可以按 Ctrl+C 来取消操作。

若要保留命令历史记录,可以使用 Alt+Shift+# 将其变为注释。


Bash Emacs 编辑模式速查表


344
被Ctrl-U删除的那一行可以使用Ctrl-Y撤销。 - keks
93
什么?太酷了,谢谢 keks 和 kev。⌃+U 是删除光标前的所有内容,⌃+K 是删除光标后的所有内容,⌃+A 是跳转到行首。因此,在技术上,⌃+C 是这个问题的最佳解决方案。 - Binarian
4
Alt-Shift-#无效?其他的都有效。Alt-Shift-#在终端上打印一个>字符。 - tgkprog
4
U/AY更像是剪切粘贴。尝试多次按下 Ctrl + Y - keyser
12
在Bash中,ESC是一个独立的修饰键。它用于取消历史记录导航(CTRL+r),或交换光标后面的最后两个单词(ESC+t)等操作。 - noobish
显示剩余11条评论

782

总结所有答案:

  • 清除当前行:您可以使用 Ctrl+U 清除到开头。
  • 清除当前行:Ctrl+E Ctrl+U 在终端上擦除当前行
  • 清除当前行:Ctrl+A Ctrl+K 在终端上擦除当前行
  • 取消当前命令/行:Ctrl+C
  • 回叫删除的命令:Ctrl+Y(然后是 Alt+Y
  • 移动光标到行首:Ctrl+A
  • 移动光标到行尾:Ctrl+E
  • 删除光标后面的单词,例如,如果您在命令的中间:Ctrl+K
  • 删除光标左边的字符,直到单词的开头:Ctrl+W
  • 清除整个命令提示符:Ctrl + L
  • 在行首和当前光标位置之间切换:Ctrl + XX

11
注意:按下Ctrl-K会删除光标位置到行尾之间的所有内容。 - Peter Berg
12
移除下一个单词:Alt + D - cnlevy
2
Alt + D 不起作用,所以我没有包括它 :( - J4cK
4
CTRL + L 可以清除屏幕,但保留当前命令行中已经输入的内容。 - Aziraphale
1
Ctrl + Alt + > 移动到输入历史记录的末尾,这在您想要取消搜索历史记录时非常完美。 - astasiak
显示剩余5条评论

258

我有完整的快捷键列表:

  1. Ctrl+a 将光标移动到行首
  2. Ctrl+e 将光标移动到行尾
  3. Ctrl+b 向后移动一个字符
  4. Alt+b 向后移动一个单词
  5. Ctrl+f 向前移动一个字符
  6. Alt+f 向前移动一个单词
  7. Ctrl+d 删除当前字符
  8. Ctrl+w 剪切最后一个单词
  9. Ctrl+k 剪切光标之后的所有内容
  10. Alt+d 剪切光标之后的一个单词
  11. Alt+w 剪切光标之前的一个单词
  12. Ctrl+y 粘贴最后删除的命令
  13. Ctrl+_ 撤销上一个操作
  14. Ctrl+u 剪切光标之前的所有内容
  15. Ctrl+xx 在首尾位置切换
  16. Ctrl+l 清屏
  17. Ctrl+c 取消当前命令
  18. Ctrl+r 在历史命令中搜索 - 输入搜索词
  19. Ctrl+j 结束在当前历史记录条目处的搜索
  20. Ctrl+g 取消搜索并恢复原始行
  • Ctrl+n 从历史记录中获取下一个命令
  • Ctrl+p 从历史记录中获取上一个命令

  • 6
    抱歉,但我已经提供了所有有用的快捷键,其中7、8、9、10、11、14、16、17是可以根据需要使用的清除/删除快捷键。 - tharunkumar
    5
    需要提到的是,CTRL + L(16.)可以保留当前命令行的内容。 - Aziraphale
    在Windows上似乎需要使用Ctrl + Shift + A键来跳到行的开头。 - Gandalf458
    6
    缺少Ctrl+h:删除光标前的字符。 - peflorencio

    38

    另一个不错的完整列表:

    TERMINAL Shortcuts Lists:
    
    Left            Move back one character
    Right           Move forward one character
    Ctrl+b          Move back one character
    Ctrl+f          Move forward one character
    
    Alt+Left        Move back one word
    Alt+Right       Move forward one word
    Alt+b           Move back one word
    Alt+f           Move forward one word
    
    Cmd+Left        Move cursor to start of line
    Cmd+Right       Move cursor to end of line
    Ctrl+a          Move cursor to start of line
    Ctrl+e          Move cursor to end of line
    
    Ctrl+d          Delete character after cursor
    Backspace       Delete character before cursor
    
    Alt+Backspace   Delete word before cursor
    Ctrl+w          Delete word before cursor
    Alt+w           Delete word before the cursor
    Alt+d           Delete word after the cursor
    
    Cmd+Backspace   Delete everything before the cursor
    Ctrl+u          Delete everything before the cursor
    Ctrl+k          Delete everything after the cursor
    
    Ctrl+l          Clear the terminal
    
    Ctrl+c          Cancel the command
    Ctrl+y          Paste the last deleted command
    Ctrl+_          Undo
    
    Ctrl+r          Search command in history - type the search term
    Ctrl+j          End the search at current history entry and run command
    Ctrl+g          Cancel the search and restore original line
    
    Up              previous command from the History
    Down            Next command from the History
    Ctrl+n          Next command from the History
    Ctrl+p          previous command from the History
    
    Ctrl+xx         Toggle between first and current position
    

    30

    Ctrl+ACtrl+K可以在终端中擦除当前行。如果需要,您可以使用Ctrl+Y来重新调用它。


    17
    或者如果您正在使用vi模式,请按Esc然后再按cc撤销刚才的操作。
    要恢复您刚才删除的内容,按Esc然后再按p即可 :)

    6
    你可以通过执行命令 echo 'set editing-mode vi' >> ~/.inputrc 来启用Vi模式。这个命令在一些地方也适用,比如Python解释器提示符和某些SQL客户端。 - dwurf

    14

    我不确定你是否喜欢它,但我使用Ctrl+A(用于跳转到行首)和Ctrl+K(用于删除整行)。我曾经在emacs中使用这些命令,并偶然发现了它们。


    13

    一个替代 Ctrl+A 的快捷键是 Ctrl+E,一个替代 Ctrl+K 的快捷键是 Ctrl+U


    12

    Ctrl+W 可以清除左侧的单词。


    8
    • Ctrl+u: 将光标向上移动到环形缓冲区的开头。
    • Ctrl+k: 将光标向上移动到环形缓冲区的结尾。
    • Ctrl+w: 将光标左侧的字符和(多个)单词移动到环形缓冲区中。

    • Ctrl+y: 插入最后一次使用的环形缓冲区中的条目,然后您可以使用 Alt+y 旋转您的环形缓冲区。按多次以继续查看环形缓冲区中的“前一个”条目。


    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接