狂欢

狂欢

考虑以下 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

相关内容