我注意到在我的编辑中一个常见的习语是希望删除所有内容,但不包括下一个时期。经过一些在线研究,我发现以下命令可以工作(我没想到搜索可以工作,但他们确实如此):
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>.
?
如果需要任何其他信息,我很乐意提供。
顺便说一句,如果你想删除一个句子,你可以像这样使用句子向前运动:
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)
搜索从光标所在位置开始,到下一个句点结束。