Ada*_*tan 109 command-line bash
考虑以下 bash 提示,其中^
表示提示位置:
$ git commit -am "[bug 123456] Do this and that with the bug"
^
Run Code Online (Sandbox Code Playgroud)
假设我想用不同的提交消息再次提交同一个错误。有没有办法从光标位置删除文本直到行尾?
小智 173
使用Ctrl+K删除从光标到行尾。
使用Ctrl+U删除从光标到行首的内容。
Kev*_*wen 52
这取决于您在 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
Run Code Online (Sandbox Code Playgroud)
要切换命令行编辑模式,只需键入:
set -o vi
Run Code Online (Sandbox Code Playgroud)
或者
set -o emacs
Run Code Online (Sandbox Code Playgroud)
如果您只熟悉 Zsh 和 Bash 之一,以下是您(可能)需要的等效键绑定:
bind '"\C-k"':kill-line
Run Code Online (Sandbox Code Playgroud)
bindkey "\C-k" vi-kill-eol
Run Code Online (Sandbox Code Playgroud)
其他相关信息
要获取键绑定列表:
# bash
bind -p
# zsh
bindkey
Run Code Online (Sandbox Code Playgroud)