如何在vim中仅对高亮文本进行替换?

3

在进行替换之前,我通常会先键入/foo来搜索模式。
Vim会自动突出显示所有与该模式匹配的字符串。
然后我想出了如何编写替换命令:%s/foo/bar/g
当模式很复杂时,编写替换命令比搜索命令要困难得多。
如果我只能在突出显示的字符串上进行替换。那就容易多了。

例如:

问题: 翻译行的一部分
我可以找出搜索模式:/\[\[\(http\)\@!.\{-}\]\]
但是我不容易想出替换命令。


这个回答是否解决了你的问题?如何在Vim中使用视觉选择进行替换? - toraritte
3个回答

6

如果您在替换命令中使用空字符串作为搜索模式,则可以替换先前搜索的模式:

在正常模式下,在/foo之后键入:%s//bar/g,将“foo”替换为“bar”。


0

我刚刚想到:

:%s@@\=substitute(submatch(0), '_', '/', '')@g

但是有更好的方法吗?


0
你可以在 Vim 中使用“c”标识来在替换之前确认。它会在找到每个匹配给定模式的内容时,高亮并停止操作以等待确认。
:%s/foo/bar/gc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接