重击:使用键盘快捷键从光标删除到行尾


91

考虑以下bash提示,其中^表示提示位置:

$ git commit -am "[bug 123456] Do this and that with the bug"
                               ^

假设我想使用不同的提交消息再次提交给同一错误。有没有办法从光标位置删除文本到行尾?

Answers:


145

使用Ctrl+ K从光标删除到行尾。

使用Ctrl+ U从光标删除到行的开头。


组合键是什么?
ShooShoSha

@ShooShoSha,尝试Shift +插入
user128285 '18

K和U的含义是什么,如果我不知道这些含义的话,下周我将不记得了,如何记住它们?
workplaylifecycle

2
@hylepo Dunno,但我的助记符是Brexit - the UK leaves Europe-U删除至开头,K删除至结尾。
Snowcrash

47

这取决于您在shell 中使用vi(set -o vi)还是emacs(set -o emacs)编辑模式。

默认情况下,您的Shell通常默认为emacs编辑模式。

  • 在emacs模式下,可以使用命令ctrl- 删除到行尾k

  • 但是,如果您恰好在命令外壳程序中使用vi编辑模式,则可以通过键入Esc(这将使您进入命令模式)后接d- $(如果要删除整行,请输入dd)来实现相同的结果。

如果不确定外壳程序当前正在使用哪种编辑模式,请从命令行输入set -o命令,您将能够确定当前使用的编辑模式:

set -o
...snip...
emacs           on
...snip...
vi              off

要切换命令行编辑模式,只需键入:

set -o vi

要么

set -o emacs

4
如果需要助记符,则K表示kill(从光标位置开始的行)。
Gregor Botero

5
在vi命令模式下,其D工作原理与d$
glenn jackman 2013年

3
实际写正确答案并解释shellopts可能会改变+1 。
TC1

1
>>谢谢。看来我正在使用vi,所以CTRL + K可以解决问题。– Adam Matan Adam,那是您所处的emacs模式,而不是vi。
catch22年

1
在Kubuntu oneiric(konsole)中,Ctrl + K和ESC Shift + D均可使用。ESC d删除某些行(可能最多为“;”)。(在那之后键入$会将$发送到控制台。)我一直在试图弄清楚如何做到这一点。谢谢!

3

如果您只熟悉Zsh和Bash之一,则这里是您(可能)需要的等效键绑定:

重击

bind '"\C-k"':kill-line

sh

bindkey "\C-k"      vi-kill-eol

其他相关资料

要获取按键绑定列表:

# bash
bind -p

# zsh
bindkey

我糊涂了。对于Bash,不应该是"^k" Control + K吗?
wjandrea

对不起,那是我的个人约束力。我本来会使用默认绑定,但对bash语法不满意。既然您已经提到了它应该是什么,那么我就相信了并编辑了我的帖子。
Sridhar Sarnobat

1
哦好的。我本人并不熟悉它,但只是检查了一下,应该是"\C-k"
wjandrea
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.