在提示符下按下按键以清除当前行

在提示符下按下按键以清除当前行

如何清除当前行?我正在使用 bash。

我不喜欢ctrl+c因为它会在屏幕上留下垃圾。

如果光标位于行末,我可以使用ctrl+ u,它完全符合我的要求。但如果光标位于行中,我需要使用ctrl+ ectrl+ u(或ctrl+ actrl+ k)这样的序列来获得所需的行为。

是否有一个按键可以执行此操作,无论光标位于行中的什么位置?

我还想知道这在 vim 中是否可以实现(0D与一次按键的行为相同)

答案1

狂欢你可以将kill-whole-line命令绑定到例如CTRL-K

bind '"\C-k": kill-whole-line'

这正是你想要的(来自man bash):

kill-whole-line 删除当前行上的所有字符,无论 point 在哪里。

~/.bashrc如果您希望这种行为持续下去,请将其交给您。

如果你想重新绑定,CTRL-U你必须在你的~/.inputrc

set bind-tty-special-chars off

此错误报告


vim您可以为 定义一个快捷方式0D

map <C-k> 0D
imap <C-k> <ESC>0Di

您可以在命令模式 ( :) 中测试此命令,也可以将其放入~/.vimrc或中~/.vim/vimrc以使其永久生效。根据您的需要选择一个合理的快捷方式,我过去一直CTRL+K与 bash 示例保持一致。该imap行用于插入模式,所以你甚至不必去命令模式删除当前行,也就是说,这可以节省另外两个键的按下。(我不是vim破解者,所以可能有更好的方法来实现这一点,但它似乎有效......)

答案2

我能想到两个按键(dd)。首先将 bash 设置为 vi 模式(可使用 bash 命令行编辑 vi 命令):

set -o vi

然后删除当前线类型dd

相关内容