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

Jor*_*mer 76 vi vim

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

例如,如果我搜索一个单词,是否有任何命令将光标移动到突出显示的段的末尾?说我有一个词,"FishTaco",我想搜索所有"鱼"的实例并在其后插入一些东西.我知道我可以进行全局替换,但是如果我只想在几个非顺序实例中进行更改呢?

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

Tim*_*Tim 118

你可以这样做:

/Fish/e

/e在搜索区域(而不是默认的第一个字符结束在年底登陆你的光标.

  • 请注意,您可以添加*+ n*或*-n*以在结束之前或之后放置光标*n*个字符. (27认同)
  • +1自从我12岁以来已经使用vim 20年但仍然不知道这个... (14认同)
  • 值得注意的是,在你已经完成了`/ Fish`搜索后,你可以用`// e`跳到最后,从Vim 7.4你可以使用`gn`来直观地突出显示找到的结果. (9认同)

ghb*_*att 73

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

/Fish/e+1
Run Code Online (Sandbox Code Playgroud)

将光标放在h之后.(没有+1光标将结束到最后一个字符的左侧.)

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

您可以使用

/FishTaco/s+4
Run Code Online (Sandbox Code Playgroud)

你的光标将在Fish和Taco之间结束.在/s+4地方搜索词开始后光标4个地方.

你也可以使用

/FishTaco/e-3
Run Code Online (Sandbox Code Playgroud)

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

你也可以使用

/FishTaco/b+4 
Run Code Online (Sandbox Code Playgroud)

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

  • 很好的解释,但现在我只是饿了. (12认同)

Ing*_*kat 25

如果您已经搜索过/Fish,则可以快速更改搜索以转到匹配结束//e,这会重复上一次搜索,但会附加e已经解释过的修饰符.

  • //e+number 正是我正在寻找的!惊人的。 (2认同)

kpr*_*bst 11

一旦进行了视觉选择,您就可以使用o在所选块的开始和结束之间切换光标位置.当按行选择时,这会切换位置,这意味着光标移动到选择的起始和结束行,但不移动到起始或结束字符.当选择是字符方式时,运动也是字符方式.

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

编辑:啊,但对于搜索突出显示,这将无效,因为o将启动一行插入.我猜搜索突出显示与视觉选择不一样,对不起:)


mos*_*osh 10

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


rom*_*inl 8

您的问题"匹配结束时的光标"部分已经回答了.

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