如果我正在使用终端并为命令输入一行文本,是否有热键或任何方式来清除/删除该行?
例如,如果我当前的行/命令非常像:
> git log --graph --all --blah..uh oh i want to cancel and clear this line <cursor is here now>
是否有热键或命令从上面到:
>
?
通常我会按↓键,如果我的当前行是历史上的全新行,那将清除它 . 但是如果我通过↑键浏览我的命令历史并开始编辑或使用这些命令,↓只会将提示更改为历史记录中的下一个最新命令,因此除非我多次按↓,否则它不起作用 .
13 回答
您可以使用Ctrl U清除开头 .
您可以使用Ctrl W删除一个单词 .
您也可以使用Ctrl C取消 .
如果要保留历史记录,可以使用Alt Shift#将其作为注释 .
Bash Emacs编辑模式备忘单
只是总结一下所有的答案:
清理线:您可以使用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 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历史记录中的上一个命令
按Ctrl A,Ctrl K擦除终端中的当前行 . 然后,如果需要,可以使用Ctrl Y调用它 .
或者如果你使用vi模式,点击Esc后跟cc
找回你刚刚删除的东西,Esc然后p :)
Ctrl A,Ctrl K的替代方案是Ctrl E,Ctrl U.
我不确定你是否喜欢它,但我使用Ctrl A(开始行)和Ctrl K(删除行)我熟悉emacs的这些命令,并意外地弄清楚了 .
Ctrl u: move 直到行的开头到环形缓冲区
Ctrl k: move 直到您的行的末尾到环形缓冲区
Ctrl w: move 个字符和(多个)单词从光标留到环形缓冲区
Ctrl y:从环形缓冲区插入最后一个条目,然后您可以使用Alt y在环形缓冲区中旋转 . 按多次以继续在环形缓冲区中输入"previous" .
CTRL R并开始键入以搜索历史记录中的先前命令 . 将显示完整的线条 .
CTRL R再次循环 .
Ctrl W将清除左侧的单词 .
添加到列表:
在Emacs模式下,点击Esc,然后按R,将删除整行 .
我不知道为什么,恰好发现它 . 也许它不是用于删除行,但碰巧具有相同的效果 . 如果有人知道,请告诉我,谢谢:)
在Bash中工作,但在Fish中不起作用 .
要删除整行,无论光标在哪里,都可以使用
kill-whole-line
命令,但默认情况下它是未绑定的 . 例如,它可以通过插入绑定到Ctrl Alt K.进入您的Readline初始化文件(通常为
~/.inputrc
) .各种评论:
bind -P
检查所有绑定 . 检查建议的绑定Readline初始化文件名取自shell变量
INPUTRC
. 如果未设置,则默认为~/.inputrc
,或(如果不存在)/etc/inputrc
. 请注意,如果您有~/.inputrc
,则会忽略/etc/inputrc
.要重新加载Readline初始化文件,可以使用Ctrl X Ctrl R.
相关手册部分的链接:
Readline Init File
Readline killing and yanking commands
bind builtin
为了清理整条 生产环境 线(2种不同的方式):
Home,Ctrl K.
结束,Ctrl U.