问题描述
考虑以下bash提示符,其中^
表示提示位置:
$ git commit -am "[bug 123456] Do this and that with the bug"
^
假设我想用不同的提交消息再次提交相同的错误。有没有办法从光标位置删除文本直到行尾?
最佳解决方法
使用Ctrl
+ K
从光标删除到行尾。
使用Ctrl
+ U
从光标删除到行首。
次佳解决方法
这取决于您在shell中是使用vi(set -o vi
)还是emacs(set -o emacs
)编辑模式。
默认情况下,你的shell通常默认为emacs编辑模式。
-
在emacs模式下,可以使用命令
ctrl
–k
删除到行尾。 -
但是,如果您碰巧在命令行界面中使用了vi编辑模式,则可以通过键入
Esc
(这会将您置于命令模式),然后键入d
–$
(如果要删除整行,输入dd
)。
如果您不确定您当前在shell中使用哪种编辑模式,请从命令行输入命令set -o
,您将能够确定当前使用的编辑模式:
set -o
...snip...
emacs on
...snip...
vi off
要切换命令行编辑模式,只需输入:
set -o vi
要么
set -o emacs
第三种解决方法
如果您只熟悉Zsh和Bash之一,则可以使用以下等效键绑定:
bash
bind '"\C-k"':kill-line
zsh
bindkey "\C-k" vi-kill-eol
其他相关信息
要获取关键绑定列表,请执行以下操作:
# bash
bind -p
# zsh
bindkey