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

时间:2013-07-12 05:29:11

标签: vim

假设我已将这篇文章写成一行:

myNewFunction(argument); // some junk I don't need
                       ^
                   my cursor

在分号(我正在使用分号)后删除所有内容的最快方法是什么。因此,例如,D将无法工作,因为它也会删除分号。我知道我可以做lD(向右移动,然后删除)

是否有一般方法在光标后删除?理想情况下,我甚至可以做Da3之类的事情(删除光标位置后的所有三个字符)

编辑:这经常发生在我输入分号后然后按Esc - 现在我的光标在分号上。

3 个答案:

答案 0 :(得分:3)

大声笑....好吧,我会输入它。

所以 - 如果你处于插入模式,<C-O>只关闭一个命令,而不移动光标。因此,如果您执行<C-O>D,您将删除该行的其余部分并退回到插入模式。

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

答案 1 :(得分:0)

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

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

:s/;\ze.*$//

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

答案 2 :(得分:0)

尝试创建一个函数并将其与法线贴图一起使用。

这会在当前光标位置下获取字符,而不是D使用C来设置插入模式,并让我们将字符保存得很普遍:

function! DeleteUntilEOL()
    let c = getline('.')[col('.')-1]
    execute 'normal C' . c 
endfunction

现在创建映射:

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