在Vim / Vi中是否有一个命令将光标移动到search高亮的末尾?

Vim / Vi中是否有任何命令可以在选定的search段中移动?

例如,如果我search一个词,是否有任何命令将光标移动到突出显示的段的末尾? 说我有一个词“FishTaco”,我想search“鱼”的所有实例,并在其后面插入一些东西。 我知道我可以做一个全局replace,但是如果我只想在一些非顺序的实例中进行修改呢?

我可以看到能够将光标移动到当前突出显示的段的末尾来执行操作。

你可以这样做:

/Fish/e

/e最后将光标停在search区域的末尾(而不是默认的第一个字符)。

如果你只是想把你的光标放在鱼的最后一个字符之后,那么你可以使用

 /Fish/e+1 

这将把你的光标放在h后面。 (如果没有+1 ,光标将会在最后一个字符的左边结束。)

如果您特别有兴趣将光标放在Fish之后,但只有当它出现在“FishTaco”中时,才可以尝试以下选项之一:

您可以使用

 /FishTaco/s+4 

你的光标会在Fish和Taco之间结束。 /s+4将光标置于search词开始之后的4个位置。

你也可以用

 /FishTaco/e-3 

将光标放在最后(结束)字符左侧的3个位置。

你也可以使用

 /FishTaco/b+4 

因为/b+4将被视为/s+4

如果您已经search了/Fish ,则可以通过//e快速更改search到比赛结尾,这会重复上次search,但会附加已经解释过的e修饰符。

一旦你有了一个视觉select,你可以使用o来切换所选块的开始和结束之间的光标位置。 当select是逐行时,这将切换行的位置,这意味着光标移动到select的开始和结束行,而不是开始或结束字符。 当select是字符明智的,那么运动也是字符明智的。

你也可以用`<`>在视觉块的开始和结束之间切换光标,但是这会影响select本身,所以它被用来重置或调整select范围。

编辑:啊,但对于search亮点,这将无法正常工作,因为o将启动一个行插入。 我猜search高亮是不一样的视觉select,对不起:)

你的问题部分的“光标在比赛结束”部分已经回答。

你可以做:%s/Fish/FishTaco/c 。 这让您有机会确认或拒绝每一个替代品,并跳过整个“比赛结束时的光标”业务。

/ long-regexp1 \zs long-regexp2 / ..游标将停在\ zs处 ,请参阅:help \ zs