ChatGPT解决这个技术问题 Extra ChatGPT

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

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

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

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

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

>

?

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


N
Norman Lin

您可以使用 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)。
J
J4cK

总结一下所有的答案:

清理行:您可以使用 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 + > 移动到输入历史的末尾,当您想取消搜索历史时,这是完美的选择。
J
Justin

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

Ctrl+a 将光标移至行首 Ctrl+e 将光标移至行尾 Ctrl+b 后移一个字符 Alt+b 后移一个字 Ctrl+f 前移一个字符 Alt+f 前移一个字 Ctrl+d 删除当前字符 Ctrl+w 剪切最后一个单词 Ctrl+k 剪切光标后的所有内容 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 历史记录中的上一个命令


对不起,但是我提供了所有有用的快捷键,其中7,8,9,10,11,14,16,17是我们可以根据需要使用的清除/删除快捷键。
需要指出的是 CTRL + L (16.) 保留了当前命令行的内容。
在 Windows 上,您似乎需要使用 Ctrl+Shift+A 转到行首
缺少Ctrl+h:删除光标前的字符
O
Oliver Salzburg

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


8
8c6b5df0d16ade6c

另一个不错的完整列表:

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

b
bluTaz

或者如果您使用 vi 模式,请按 Esc,然后按 cc

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


您可以通过 echo 'set editing-mode vi' >> ~/.inputrc 启用 vi 模式。也适用于 python 解释器提示和一些 SQL 客户端等地方
O
Oliver Salzburg

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


O
Oliver Salzburg

Ctrl+A、Ctrl+K 的替代方法是 Ctrl+E、Ctrl+U。


C
Cyrus

Ctrl+u:向上移动到行首到环形缓冲区

Ctrl+k:向上移动到行尾到环形缓冲区

Ctrl+w:将光标左侧的字符和(多个)单词移动到环形缓冲区

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


S
Sk8erPeter

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


B
Benjamin W.

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

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

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

各种备注:

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

Readline 初始化文件名取自 shell 变量 INPUTRC。如果未设置,则默认为 ~/.inputrc,或(如果不存在)/etc/inputrc。请注意,如果您有 ~/.inputrc,则 /etc/inputrc 将被忽略。

要重新加载 Readline 初始化文件,可以使用 Ctrl+X Ctrl+R。

相关手册部分的链接: Readline Init File Readline kill and yanking commands The bind builtin

读取线初始化文件

Readline 杀戮和拉拽命令

内置绑定


J
Jose1755

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

主页 , Ctrl+K

结束 , Ctrl+U


J
Josh Correia

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


P
PickBoy

添加到列表中:

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

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

在 Bash 中工作,但在 Fish 中不起作用。


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

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


H
High Performance Rangsiman

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

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