【问题标题】:How do I clear/delete the current line in terminal?如何清除/删除终端中的当前行?
【发布时间】:2012-03-29 14:27:45
【问题描述】:

如果我使用终端并为命令输入一行文本,是否有热键或任何方法可以清除/删除该行?

例如,如果我当前的行/命令很长,例如:

> git log --graph --all --blah..uh oh i want to cancel and clear this line <cursor is here now>

是否有热键或命令可以从上面转到:

>

?

通常我会按 键,如果我当前的行是历史上的全新行,那将清除它。但是如果我通过 键浏览我的命令历史并开始编辑或使用这些命令, 只会将提示更改为历史中的下一个最新命令,所以它在这里不起作用,除非我按 多次。

【问题讨论】:

标签: bash terminal


【解决方案1】:

您可以使用 Ctrl+U 清除到开头。

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

也可以使用Ctrl+C来取消。

如果你想保留历史记录,可以使用Alt+Shift+#来做注释。


Bash Emacs Editing Mode Cheat Sheet

【讨论】:

  • Ctrl-U 删除的行也可以用 Ctrl-Y 调用。
  • 呜?太酷了,谢谢keks & kev,⌃+U 是删除光标前的所有内容,⌃+K 是删除光标后的所有内容,⌃+A 是转到行首。所以技术上⌃+C是问题的最佳解决方案
  • Alt-Shift-# 不起作用?认为其他人会。 Alt-Shift-# 在终端上打印一个 > 字符
  • U/AY 更像是剪切粘贴。尝试多次Ctrl+Y
  • @LưuVĩnhPhúc ESC 是它自己在 bash 中的修饰键。它用于取消历史导航 (CTRL+r) 或交换光标后面的最后两个单词 (ESC+t)。
【解决方案2】:

只是总结一下所有的答案:

  • 清线:可以使用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

【讨论】:

  • 注意 ctrl-k 删除光标和行尾之间的所有内容。
  • 删除下一个单词:Alt + D
  • Alt + D 不起作用这就是为什么我没有包括它:(
  • CTRL + L 清除屏幕但保留当前命令行中输入的内容。
  • Ctrl + Alt + &gt; 移动到输入历史记录的末尾,当您想取消搜索历史记录时,这是完美的选择。
【解决方案3】:

我有完整的快捷方式列表:

  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取消搜索恢复原行
  21. Ctrl+n 历史记录中的下一条命令
  22. Ctrl+p 历史记录中的上一条命令

【讨论】:

  • 对不起,我提供了所有有用的快捷键,其中 7,8,9,10,11,14,16,17 是我们可以使用的清除/删除快捷键根据要求。
  • 需要说明的是CTRL+L(16.)保留了当前命令行的内容。
  • 在windows上看来你需要使用Ctrl+Shift+A才能转到行首
  • 缺少Ctrl+h:删除光标前的字符
【解决方案4】:

Ctrl+A, Ctrl+K 擦除终端中的当前行。然后,如果需要,您可以使用 Ctrl+Y 调用它。

【讨论】:

    【解决方案5】:

    或者如果你使用 vi 模式,点击 Esc 后跟 cc

    要取回你刚刚删除的内容,Esc 然后 p :)

    【讨论】:

    • 您可以通过echo 'set editing-mode vi' &gt;&gt; ~/.inputrc开启vi模式。也适用于 python 解释器提示和一些 SQL 客户端等地方
    【解决方案6】:

    我不确定你是否喜欢它,但我使用 Ctrl+A(开始行)和 Ctrl+K (删除该行)我对 emacs 中的这些命令很熟悉,并且偶然发现了它们。

    【讨论】:

      【解决方案7】:

      另一个不错的完整列表:

      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
      

      【讨论】:

        【解决方案8】:

        Ctrl+ACtrl+K的替代方法是Ctrl +E, Ctrl+U.

        【讨论】:

          【解决方案9】:
          • Ctrl+u移动到行首到环形缓冲区
          • Ctrl+k移动到行尾到环形缓冲区
          • Ctrl+w移动字符和(多个)单词离开光标到环形缓冲区

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

          【讨论】:

            【解决方案10】:

            CTRL+R 并开始输入以搜索历史记录中的先前命令。将显示整行。
            CTRL+R 再次循环。

            【讨论】:

              【解决方案11】:

              无论光标在哪里,要删除整行,可以使用kill-whole-line命令,但默认不绑定。例如,可以通过插入

              绑定到Ctrl+Alt+K
              "\e\C-k": kill-whole-line
              

              进入您的 Readline 初始化文件(通常为 ~/.inputrc)。

              各种说法:

              • 为避免意外重新分配已用于其他用途的键序列,您可以使用 bind -P 检查所有绑定。检查建议的绑定与

                bind -P | grep '\\e\\C-k'
                
              • Readline 初始化文件名​​取自 shell 变量 INPUTRC。如果未设置,则默认为~/.inputrc,或(如果不存在)/etc/inputrc。请注意,如果您有 ~/.inputrc/etc/inputrc 将被忽略。
              • 要重新加载 Readline 初始化文件,您可以使用 Ctrl+X Ctrl+R。李>
              • 相关手册部分的链接:

              【讨论】:

                【解决方案12】:

                为了清洁整条生产线(2种不同的方式):

                • 首页 , Ctrl+K
                • 结束 , Ctrl+U

                【讨论】:

                  【解决方案13】:

                  Ctrl+W 将清除左边的单词。

                  【讨论】:

                    【解决方案14】:

                    添加到列表中:

                    在 Emacs 模式下,按 Esc,然后按 R,将删除整行。

                    我不知道为什么,只是碰巧找到它。也许它不用于删除行,但恰好具有相同的效果。如果有人知道,请告诉我,谢谢:)

                    在 Bash 中有效,但在 Fish 中无效。

                    【讨论】:

                    • 这是revert-line readline 命令:“撤消对此行所做的所有更改”。默认情况下,它绑定到M-r (Meta-R),它可以是 Alt-R 或 Esc R。这意味着它实际上并没有删除该行,只有当它开始为空时;如果您在命令历史记录中向后滚动并更改命令,然后发出revert-line,它将更改回原来的命令并且不会删除该行。
                    【解决方案15】:

                    Alt+# 退出当前行。如果需要,它将在历史记录中可用。

                    【讨论】:

                      【解决方案16】:

                      Ctrl+Alt+Backspace 用于从行尾删除向后的单词

                      Ctrl+Delete 用于从行首删除向前的单词

                      【讨论】:

                        猜你喜欢
                        • 1970-01-01
                        • 2020-05-02
                        • 2011-03-11
                        • 1970-01-01
                        • 2023-02-22
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 2021-11-13
                        相关资源
                        最近更新 更多