Vim / Vi中是否有任何命令可以在选定的搜索细分中移动?
例如,如果我搜索一个单词,是否有任何命令将光标移动到突出显示的段的末尾?说我有一个词,“FishTaco”,我想搜索所有“鱼”的实例并在其后插入一些东西。我知道我可以进行全局替换,但是如果我只想在几个非顺序实例中进行更改呢?
我可以看到能够将光标移动到当前突出显示的段的末尾以执行操作的方便位置。
答案 0 :(得分:114)
你可以这样做:
/Fish/e
最后的/e
将光标放在搜索区域的末尾(而不是默认情况下的第一个字符。
答案 1 :(得分:72)
如果您只想将光标放在Fish的最后一个字符之后,那么您可以使用
/Fish/e+1
将光标放在h之后。 (如果没有+1
,光标将结束到最后一个字符的左侧。)
如果您特别想将光标放在Fish之后,但只有当它出现在“FishTaco”中时,您才可以尝试以下选项之一:
您可以使用
/FishTaco/s+4
你的光标将在Fish和Taco之间结束。 /s+4
将光标放在搜索词开始后的4个位置。
您也可以使用
/FishTaco/e-3
将光标放在最后一个(结束)字符左侧的3个位置。
您也可以使用
/FishTaco/b+4
因为/b+4
将被视为/s+4
。
答案 2 :(得分:24)
如果您已搜索过/Fish
,则可以通过//e
快速更改搜索以转到匹配结尾,这会重复上次搜索,但会附加e
已经解释过的修饰语。
答案 3 :(得分:11)
一旦进行了视觉选择,您可以使用o
在所选块的开头和结尾之间切换光标位置。当按行选择时,这会切换行位置,这意味着光标移动到选择的起始和结束行,但不移动到起始或结束字符。当选择是字符方式时,运动也是字符方式。
您还可以使用`<
和`>
在可视块的开头和结尾之间切换光标,但这会影响选择本身,因此它用于重置或调整选区边界
编辑:啊,但是对于搜索突出显示,这不起作用,因为o
会启动一行插入。我猜搜索突出显示与视觉选择不同,抱歉:)
答案 4 :(得分:10)
/ long-regexp1 \zs long-regexp2 /
..光标将停在\ zs ,请参阅:help \ zs
答案 5 :(得分:8)
问题“匹配结束时的光标”部分已经回答了。
你可以:%s/Fish/FishTaco/c
。这使您有机会确认或拒绝每个替换,并跳过整个“匹配结束时”的业务。