Vim 键绑定删除(但不包括)下一个时期

Rei*_*eid 6 vim

我注意到在我的编辑中一个常见的习语是希望删除所有内容,但不包括下一个时期。经过一些在线研究,我发现以下命令可以工作(我没想到搜索可以工作,但他们确实如此):

d/\.
Run Code Online (Sandbox Code Playgroud)

然后它突出显示页面上的所有时期,所以我想用:noh.

我尝试制作自己的地图:

map <leader>. :normal d/\.<cr>:noh<cr>
Run Code Online (Sandbox Code Playgroud)

我选择使用:normal是因为我不确定它如何能够“告诉”我希望搜索结束的位置。然而,这显然失败了。它什么都不做。它在状态栏中显示它运行:noh良好,所以我认为它可以通过命令正常运行。它只是不起作用。

当我尝试:normal d/\.单独作为命令运行时(在 Vim 中),我在状态栏中收到以下消息:

YR:Aborting command d/
Run Code Online (Sandbox Code Playgroud)

这是来自Yankring.vim的错误消息,所以我暂时禁用了它。现在一旦我运行命令,它就什么都不做。只是高兴地坐在那里。

澄清一下:手动输入命令可以使用或不使用 yankring。只是我无法获得map我尝试过的各种s 中的任何一个,无论是否有 yankring。

我认为问题的根源在于,当我d/正常输入时,会提示我进行搜索(此方法工作正常)。一切都很好,但是有什么方法可以自动执行此操作以便可以绑定到<leader>.

如果需要任何其他信息,我很乐意提供。

Gil*_*il' 11

如果.字符与光标在同一行,可以执行dt., 或ct.删除后进入插入模式。


max*_*zig 6

顺便说一句,如果你想删除一个句子,你可以像这样使用句子向前运动:

d)i.
Run Code Online (Sandbox Code Playgroud)

意思是,删除包含句号的句子,然后再次插入。

d/\. 是必要的,如果你想删除多行并且有一个非文本文档上下文,例如文本之间的空行并且你真的想删除到下一段。

如果句点在同一条线上,您可以使用直到之前的动作: dt.

打字

:normal d/\.^M
Run Code Online (Sandbox Code Playgroud)

( Ctrl+V+Enter在最后)

为我工作。

但我不得不说,我不明白:normal.

我的意思是,使用

:map <F10> d/\.<CR>:noh<CR>
Run Code Online (Sandbox Code Playgroud)

搜索从光标所在位置开始,到下一个句点结束。