关于bash:如何清除/删除终端中的当前行?

How do I clear/delete the current line in terminal?

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

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

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

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

1
>

通常我会按&8595;键,如果我当前的产品线是历史上的一个全新产品,这将清除它。但是,如果我通过&键查看我的命令历史,并开始编辑或使用这些命令,&8595;将只将提示更改为历史上的下一个最新命令,因此,除非我多次按&8595;,否则它在这里不起作用。


您可以使用ctrl+u清除到开始。

您可以使用ctrl+w删除一个单词。

您也可以使用ctrl+c取消。

如果要保留历史记录,可以使用alt+shift+ 将其作为注释。

bash emacs editing mode kiat sheet


总结一下所有答案:

  • 清除行:可以使用ctrl+u清除到开始。
  • 清除线路:ctrl+e ctrl+u,清除终端当前线路
  • 清除线路:ctrl+a ctrl+kbd,清除终端当前线路
  • 取消当前命令/行:ctrl+c
  • 调用删除的命令:ctrl+y(然后是alt+y)
  • 转到行首:ctrl+a
  • 转到行尾:ctrl+e
  • 例如,如果您位于命令的中间,请删除转发字:ctrl+kbd
  • 删除左边的字符,直到单词:ctrl+w的开头
  • 清除整个命令提示:ctrl+l
  • 在行首和当前光标位置之间切换:ctrl+xx


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

  • ctrl+a将光标移动到行首
  • ctrl+e将光标移动到行尾
  • ctrl+b向后移动一个字符
  • alt+b向后移动一个字
  • ctrl+f向前移动一个字符
  • alt+f向前移动一个字
  • 删除当前字符
  • ctrl+w剪切最后一个单词
  • CtrL+KBD在光标后剪切所有内容
  • alt+d光标后剪切单词
  • alt+w光标前剪切字
  • ctrl+y粘贴上次删除的命令
  • ctrl+_撤消
  • ctrl+u剪切光标前的所有内容
  • CtrL+XX在第一个和当前位置之间切换
  • ctrl+l清除终端
  • ctrl+c取消命令
  • 历史记录中的ctrl+r搜索命令-键入搜索词
  • ctrl+j在当前历史记录条目处结束搜索
  • ctrl+g取消搜索并恢复原始行
  • ctrl+n历史记录中的下一个命令
  • ctrl+p历史记录中的上一个命令

  • ctrl+actrl+kbd,用于擦除终端中的当前线路。然后,如果需要,可以使用ctrl+y调用它。


    或者,如果您使用vi模式,请单击esc,然后单击c

    要恢复刚才删除的内容,先是esc,然后是p:)


    ctrl+actrl+kbd的另一种选择是ctrl+ectrl+u


    我不确定你是否喜欢它,但我使用ctrl+a(开始一行)和ctrl+kbd(删除一行),我从emacs熟悉这些命令,并意外地发现了它们。


    • ctrl+u:向上移动到行首的环形缓冲区
    • CtrL+KBB:向上移动到行尾的环形缓冲区
    • ctrl+w:将光标中的字符和(多个)单词移到环形缓冲区

    • ctrl+y:从环缓冲区插入最后一个条目,然后可以使用alt+y在环缓冲区中旋转。多次按可继续在环缓冲区中输入"上一个"条目。


    ctrl+r并开始键入以搜索历史记录中以前的命令。将显示整行。ctrl+r再次循环。


    为了清洁整个管路(两种不同的方式):

    • HOMECtrL+KBD
    • ENDABCBD、CTRABCBD+UBKBD

    添加到列表:

    在Emacs模式下,点击esc,然后点击r,将删除整行。

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

    在bash中工作,但在fish中不工作。


    要删除整行,无论光标在哪里,都可以使用kill-whole-line命令,但默认情况下它是未绑定的。它可以通过插入绑定到,例如,ctrl+alt+kbd

    1
    "\e\C-k": kill-whole-line

    进入你的readline init文件(通常是~/.inputrc)。

    各种备注:

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

      1
      bind -P | grep '\\e\\C-k'
    • readline init文件名取自shell变量INPUTRC。如果未设置,则默认值为~/.inputrc,或者(如果不存在)/etc/inputrc。注意,如果您有~/.inputrc/etc/inputrc将被忽略。
    • 要重新加载readline init文件,可以使用ctrl+xbakbd ctrl+r
    • 相关手册章节的链接:
      • readline初始化文件
      • 读取线杀戮和猛拉命令
      • bind内置

    ctrl+w将清除左侧的单词。