在 VIM 中,如何在命令模式下删除到行尾:?

在 VIM 中,如何在命令模式下删除到行尾:?

在 VIM 中,我有一个以下的 leader 快捷方式:

:!git commit % -m 'updated '; git push;                                                                                                                                                                   

一旦我执行此领导者快捷方式,我的光标就会落在更新后的角色上。现在的问题是:

如何使用快捷键删除到该行末尾的内容?在 bash 中,快捷键是“CTRL-k”,但在这里不行。我只想删除“updated”一词后的所有内容。

在此处输入图片描述

答案1

没有默认的快捷键映射来执行您要求的操作。可以通过 找到命令模式编辑的完整文档:help cmdline-editing。欢迎您浏览它以找到对您有用的任何内容。但我认为您要求的功能不在其中。

我猜默认的命令行编辑方式不需要这样的操作。通常我们通过<Ctrl-W>不移动光标来删除光标前的单词。但当然,如果你有自己的编辑方式,你总是可以改变 vim 的行为以符合你的喜好。

你可以通过映射到一个定义好的函数来获得你想要的快捷方式,<C-K>以满足你所需的行为。这里我写了一个例子。你可以将以下代码粘贴到你的文件中~/.vimrc。重新获取文件。然后你就可以按照自己的方式让快捷方式工作了。

cnoremap <C-k> <C-\>estrpart(getcmdline(),0,getcmdpos()-1)<CR>

如果您有兴趣,这将调用默认的命令模式快捷方式(<C-\>e)来评估{expr}并用结果替换整个命令行。strpart()是 vim 提供的字符串截断函数。

当你<C-k>按下键盘按键时,vim 会从命令模式中提取内容作为字符串。然后只将字符串开头到光标位置前一个位置的内容放回原处。其余内容将被截断并删除。

答案2

键入后:进入命令模式,或插入命令后,键入CTRL+ f。命令历史记录将出现在新的“命令行窗口”中。进入后,您可以D从要删除的位置开始使用。然后只需键入即可执行命令。

相关内容