Vim/Vi 中是否有命令将光标移动到搜索突出显示的末尾



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

例如,如果我搜索一个单词,是否有任何命令可以将光标移动到突出显示的句段的末尾? 假设我有一个单词"FishTaco",我想搜索"Fish"的所有实例并在它后面插入一些内容。 我知道我可以进行全局替换,但是如果我只想在几个非顺序实例中进行更改怎么办?

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

你可以这样做:

/Fish/e

末尾的/e将光标置于搜索区域的末尾(而不是默认情况下的第一个字符)。

如果您只想将光标放在 Fish 的最后一个字符之后,那么您可以使用

/Fish/e+1

这会将您的光标放在 h 之后(如果没有+1光标将结束在最后一个字符的左侧。

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

您可以使用

/FishTaco/s+4

你的光标最终将在鱼和炸玉米饼之间结束。/s+4将光标放在搜索词开始后 4 位。

您同样可以使用

/FishTaco/e-3

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

您也可以使用

/FishTaco/b+4 

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

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

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

获得视觉选择后,可以使用o在所选块的开始和结束之间切换光标位置。当选区是逐行的时,这将切换行位置,这意味着光标移动到选区的起始行和结束,而不是开始或结束字符。当选择是字符方面的,那么运动也是字符上的。

您还可以使用 `<`> 在视觉块的开始和结束之间切换光标,但这会影响选择本身,因此它用于重置或调整选择边界。

编辑:啊,但是对于搜索突出显示,这将不起作用,因为o将启动行插入。我想搜索突出显示与视觉选择不同,对不起:)

您问题的"比赛结束时的光标"部分已经回答。

你可以做:%s/Fish/FishTaco/c.这使您有机会确认或拒绝每个替换,并跳过整个"匹配结束时的光标"业务。

最新更新