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+kbd,用于擦除终端中的当前线路。然后,如果需要,可以使用ctrl+y调用它。
或者,如果您使用vi模式,请单击esc,然后单击c。
要恢复刚才删除的内容,先是esc,然后是p:)
ctrl+a、ctrl+kbd的另一种选择是ctrl+e、ctrl+u。
我不确定你是否喜欢它,但我使用ctrl+a(开始一行)和ctrl+kbd(删除一行),我从emacs熟悉这些命令,并意外地发现了它们。
- ctrl+u:向上移动到行首的环形缓冲区
- CtrL+KBB:向上移动到行尾的环形缓冲区
ctrl+w:将光标中的字符和(多个)单词移到环形缓冲区
ctrl+y:从环缓冲区插入最后一个条目,然后可以使用alt+y在环缓冲区中旋转。多次按可继续在环缓冲区中输入"上一个"条目。
ctrl+r并开始键入以搜索历史记录中以前的命令。将显示整行。ctrl+r再次循环。
为了清洁整个管路(两种不同的方式):
- HOME、CtrL+KBD
- ENDABCBD、CTRABCBD+UBKBD
添加到列表:
在Emacs模式下,点击esc,然后点击r,将删除整行。
我不知道为什么,只是碰巧找到了。也许它不用于删除行,但恰好有相同的效果。如果有人知道,请告诉我,谢谢:)
在bash中工作,但在fish中不工作。
要删除整行,无论光标在哪里,都可以使用
1 | "\e\C-k": kill-whole-line |
进入你的readline init文件(通常是
各种备注:
为了避免意外地重新分配已经用于其他用途的键序列,可以检查所有与
bind -P 的绑定。检查建议的绑定方式1bind -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将清除左侧的单词。