Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vim/Vi中是否有将光标移动到搜索突出显示末尾的命令?_Vim_Vi - Fatal编程技术网

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

Vim/Vi中是否有将光标移动到搜索突出显示末尾的命令?,vim,vi,Vim,Vi,Vim/Vi中是否有在选定搜索段内移动的命令 例如,如果我搜索一个单词,是否有命令将光标移动到高亮显示的段的末尾?假设我有一个单词“FishTaco”,我想搜索“Fish”的所有实例并在其后面插入一些内容。我知道我可以进行全局替换,但如果我只想在几个非连续实例中进行更改,该怎么办 我可以看到在哪里可以方便地将光标移动到当前突出显示的段的末尾以执行操作。您可以使用以下方法: /Fish/e 末尾的/e将光标放在搜索区域的末尾(默认情况下不是第一个字符)。如果您只想将光标放在Fish的最后一个字符之

Vim/Vi中是否有在选定搜索段内移动的命令

例如,如果我搜索一个单词,是否有命令将光标移动到高亮显示的段的末尾?假设我有一个单词“FishTaco”,我想搜索“Fish”的所有实例并在其后面插入一些内容。我知道我可以进行全局替换,但如果我只想在几个非连续实例中进行更改,该怎么办


我可以看到在哪里可以方便地将光标移动到当前突出显示的段的末尾以执行操作。

您可以使用以下方法:

/Fish/e


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

如果您只想将光标放在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
在所选块的开始和结束之间切换光标位置。当选择为逐行时,这将切换行位置,意味着光标移动到所选块的开始和结束行n,但不适用于起始字符或结束字符。当选择字符时,移动也适用于字符

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

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

您问题的“光标在比赛结束时”部分已得到回答


您可以执行以下操作:%s/Fish/FishTaco/c。这使您有机会确认或拒绝每次替换,并跳过整个“比赛结束时的光标”业务。

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

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

注意,您可以添加+n或-n以将光标n个字符放在结尾之前或之后。值得注意的是,在您完成
/Fish
搜索后,您可以使用
/e
跳到结尾,从Vim 7.4中,您可以使用
gn
以视觉方式突出显示找到的结果。也可以查看答案,在突出显示的匹配上定位光标的更多选项。很好的解释,但现在我饿了。很棒的提示。如果输入“y”,则仅对第一个执行替换。如何确认每个匹配项?它将转到下一个匹配项,并等待您键入
y
n
等,直到没有匹配项为止。要接受所有进一步的替换,请键入
a
,要拒绝它们,请键入
q
。实际上,在最后一次
/
之后,我缺少了
g
,因此我的行中没有继续。谢谢你的提示。//e+号码正是我要找的!太棒了。这不是问题的答案,但要实现您用
FishTaco
取代所有
Fish
的最终目标,您可以做
:%s/Fish\(Taco\)\@/&Taco/
,它将发现每个
后面都没有
Taco
,并将其替换为
FishTaco
。将否定前瞻搜索与替换相结合,其中包含匹配的术语,后跟
Taco
@JimStewart。我不知道为什么此评论的+1数至少不如答案多。这是忍者级vim,我也不知道。在不重新开始的情况下修改选择的开头非常好。(例如,您选择的单词太早或太迟)