当前位置: 首页>>技术问答>>正文


Bash:使用键盘快捷键从光标删除直到行尾

, ,

问题描述

考虑以下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模式下,可以使用命令ctrlk删除到行尾。

  • 但是,如果您碰巧在命令行界面中使用了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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/888.html,未经允许,请勿转载。