在vim中删除*光标后的文本(保留光标下的内容)

在vim中删除*光标后的文本(保留光标下的内容),vim,Vim,假设我有一行文字: myNewFunction(argument); // some junk I don't need ^ my cursor 删除分号后的所有内容的最快方法是什么(我正在使用分号)。例如,D将不起作用,因为它也删除分号。我知道我可以做lD(右移一个,然后删除) 但是,有没有一种在游标之后删除的通用方法?理想情况下,我甚至可以做一些类似Da3的事情(删除光标位置后的三个字符) 编辑:这通常发生

假设我有一行文字:

myNewFunction(argument); // some junk I don't need
                       ^
                   my cursor
删除分号后的所有内容的最快方法是什么(我正在使用分号)。例如,D将不起作用,因为它也删除分号。我知道我可以做lD(右移一个,然后删除)

但是,有没有一种在游标之后删除的通用方法?理想情况下,我甚至可以做一些类似Da3的事情(删除光标位置后的三个字符)


编辑:这通常发生在我键入分号后,然后按Esc键-现在我的光标位于分号上。

我认为没有映射或重复替换是不可能的

如果“重复”替换没有问题,可以进行第一次替换:

:s/;\ze.*$//

然后,使用
&
重复它是一个关键的笔划,但是你需要进行替换,然后重复它。为了清楚起见,按
&
重复最后一次替换。它类似于
命令,但仅用于替换

尝试创建一个函数并将其与法线映射一起使用

这将获取当前光标位置下的字符,而不是使用设置插入模式的
D
而使用
C
,让我们将字符保存在前面:

function! DeleteUntilEOL()
    let c = getline('.')[col('.')-1]
    execute 'normal C' . c 
endfunction
现在创建映射:

:nnoremap <leader>D :call DeleteUntilEOL()<CR>
:nnoremap D:调用DeleteUntilEOL()

lol。。。。好的,我会把它打出来

因此-如果您处于插入模式,
仅为一个命令将其关闭,而不移动光标。因此,如果执行
D
,您将删除该行的其余部分,并返回到插入模式


如果您处于正常模式,
lD
应该足够快。

为什么您认为
lD
不够快<代码> DA3将与 3LD相当,不是吗?另外,
Da3
是非标准的(在vim中根本没有基础),而您可以说
$T;D
删除最后一个分号的所有内容,
3wD
删除三个单词后的任何内容,等等。使用标准的vim移动。抱歉,我不是建议颠覆正常的vim映射,我假设有正常的vim映射满足我的要求。当您完成键入并如上面所示结束时,是否按“Esc lD”?如果这真的是最好的方法,那没关系。事实上,也许我需要更明智地开始编辑。例如,以C开头,这样我就不会有多余的垃圾了。虽然如果我想在键入时阅读这些垃圾内容,然后再删除,那就太糟糕了。如果你想删除行的其余部分时仍处于插入模式,
D
应该这样做(并返回插入模式)。如果您想退出插入模式,则
D
lD
应该可以工作,但后者可能更“正常”。@Amadan是的,这正是我想要的。非常感谢。现在,神奇地将您的评论变成可接受答案的按钮在哪里;)