在Vim/Vi中是否有命令可移动到选定的搜索段内?
例如,如果我搜索一个单词,是否有任何命令可以将光标移到高亮显示段的末尾?假设我有一个单词"FishTaco",我想搜索所有"FISH"的实例并在其后插入一些内容。我知道我可以进行全局替换,但是如果我只想在几个非连续的实例中进行更改呢?
我可以看出,将光标移动到当前高亮显示段的末尾以执行操作将是很方便的。
在Vim/Vi中是否有命令可移动到选定的搜索段内?
例如,如果我搜索一个单词,是否有任何命令可以将光标移到高亮显示段的末尾?假设我有一个单词"FishTaco",我想搜索所有"FISH"的实例并在其后插入一些内容。我知道我可以进行全局替换,但是如果我只想在几个非连续的实例中进行更改呢?
我可以看出,将光标移动到当前高亮显示段的末尾以执行操作将是很方便的。
/Fish/e
在搜索区域末尾添加 /e
,可以将光标定位到搜索区域的末尾(默认情况下会将光标定位到第一个字符)。/Fish
搜索之后,你可以使用 //e
跳转到末尾,并且从 Vim 7.4 开始,你可以使用 gn
来可视化地突出显示找到的结果。 - smathy/[/e
会直接搜索 [/e
,但是 /\[/e
会正确地搜索 [
并将光标放在末尾 :) - Levi如果你只想把光标放在'Fish'字符串的最后一个字符之后,你可以使用以下方法:
/Fish/e+1
使用+1
,可以将光标放置在"h"的后面(如果没有+1
,则光标将停留在最后一个字符的左侧)。
如果您特别希望将光标放置在"FishTaco"中的"Fish"之后,那么可以尝试以下选项:
您可以使用
/FishTaco/s+4
你的光标将会停留在“Fish”和“Taco”之间。而/s+4
则是将光标定位在搜索词后面四个位置。
同样地,你也可以使用
/FishTaco/e-3
这会将您的光标放在最后一个(结束)字符的左侧3个位置。
您还可以使用
/FishTaco/b+4
因为/b+4
会被视为/s+4
。
/Fish
,您可以通过//e
快速更改搜索以到达匹配项的末尾,该命令重复上一次搜索,并附加已经解释过的e
修饰符。当你有一个可视化选择块时,你可以使用 o
键在选择块的起始点和结束点之间切换光标位置。当选择是按行选择时,这将切换行位置,也就是说光标会转到选定区域的起始和结束行,但不会移动到其起始或结束字符。当选择是按字符选择时,则移动也是按字符进行的。
你也可以使用 `<
和 `>
键来在可视化块的起始点和结束点之间切换光标,但这会影响选择本身,所以它用于重置或调整选择范围。
编辑:啊,但是对于搜索高亮,这样做是行不通的,因为 o
键将启动行插入。我想搜索高亮并不等同于可视化选择,抱歉 :)
/
和 ?
进行搜索移动。 - Kaz您的问题中"匹配位置在结尾"的部分已经有了答案。
您可以执行:%s/Fish/FishTaco/c
。这会给您一个确认或拒绝每个替换的机会,并跳过整个"匹配位置在结尾"的步骤。
y
或 n
等,直到没有匹配项为止。要接受所有后续替换,请键入 a
,要拒绝它们,请键入 q
。 - romainl/
后面漏掉了 g
,所以它没有继续在我的代码行中。谢谢你的提示。 - Jordan Parmer