考虑以下 bash 提示符,其中^
表示提示符位置:
$ git commit -am "[bug 123456] Do this and that with the bug"
^
假设我想再次提交同一个错误,但提交信息不同。有没有办法删除从光标位置到行末的文本?
答案1
使用Ctrl+K删除从光标到行尾的内容。
使用Ctrl+U删除从光标到行首的部分。
答案2
这取决于您在 shell 中使用 vi( set -o vi
) 还是 emacs( ) 编辑模式。set -o emacs
默认情况下,你的shell一般默认为emacs编辑模式。
ctrl在 emacs 模式下,使用命令-可以删除到行尾k。
但是,如果您恰好在命令 shell 中使用 vi 编辑模式,则可以通过键入Esc(将您置于命令模式)然后键入d- $(如果要删除整行,请输入dd)来实现相同的结果。
如果你不确定你当前在 shell 中使用哪种编辑模式,请从命令行输入命令set -o
,你将能够确定你当前正在使用哪种编辑模式:
set -o
...snip...
emacs on
...snip...
vi off
要切换命令行编辑模式,只需输入:
set -o vi
或者
set -o emacs
答案3
如果您只熟悉 Zsh 和 Bash 中的一个,以下是您(可能)需要的等效键绑定:
狂欢
bind '"\C-k"':kill-line
嘚
bindkey "\C-k" vi-kill-eol
其他相关信息
获取键绑定列表:
# bash
bind -p
# zsh
bindkey