Vim / Vi中是否有任何命令可在选定的搜索段内移动?
例如,如果我搜索一个单词,是否有任何命令将光标移动到突出显示的段的末尾?假设我有一个单词“ FishTaco”,我想搜索“ Fish”的所有实例并在其后插入一些内容。我知道我可以进行全局替换,但是如果我只想在几个非顺序实例中进行更改怎么办?
我可以看到将光标移动到当前突出显示的段的末尾以执行操作的方便之处。
Vim / Vi中是否有任何命令可在选定的搜索段内移动?
例如,如果我搜索一个单词,是否有任何命令将光标移动到突出显示的段的末尾?假设我有一个单词“ FishTaco”,我想搜索“ Fish”的所有实例并在其后插入一些内容。我知道我可以进行全局替换,但是如果我只想在几个非顺序实例中进行更改怎么办?
我可以看到将光标移动到当前突出显示的段的末尾以执行操作的方便之处。
Answers:
您可以这样做:
/Fish/e
将/e
在搜索区域(而不是默认的第一个字符结束在年底登陆你的光标。
/Fish
搜索后,您可以跳到//e
Vim 7.4的末尾,并可以从gn
视觉上突出显示找到的结果。
如果您只想将光标放在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
。
进行视觉选择后,可以使用o
来在所选块的开始和结束之间切换光标位置。当选择线是逐这样可以在线位置的,即光标移动到选择的起始和结束行但不与开始或结束字符。如果选择的是按字符排列的,则移动也将按字符排列。
您也可以使用`<
和`>
在可视块的开始和结束之间切换光标,但是这会影响选择本身,因此可用于重置或调整选择范围。
编辑:啊,但是对于搜索突出显示这是行不通的,因为o
它将启动行插入。我猜搜索突出显示与视觉选择不同,抱歉:)
问题的“比赛结束时的光标”部分已得到回答。
你可以做的:%s/Fish/FishTaco/c
。这使您有机会确认或拒绝每项替换,并跳过整个“比赛结束时的光标”业务。
y
或n
等等,直到没有匹配项为止。要接受所有其他替代,请键入a
,以拒绝它们,请键入q
。
g
决赛之后的比赛,/
因此比赛没有继续进行。谢谢你的提示。
Fish
与FishTaco
,你可以做:%s/Fish\(Taco\)\@!/&Taco/
,这将发现每一个Fish
尚未之后Taco
,取而代之的是FishTaco
。将否定超前搜索与包含相匹配的词项(后跟)的替换组合在一起Taco
。