如何清除当前行?我正在使用 bash。
我不喜欢ctrl+c因为它会在屏幕上留下垃圾。
如果光标位于行末,我可以使用ctrl+ u,它完全符合我的要求。但如果光标位于行中,我需要使用ctrl+ e、ctrl+ u(或ctrl+ a、ctrl+ 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
。