在 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从要删除的位置开始使用。然后只需键入↩即可执行命令。