如何仅在vim中突出显示的文本上进行替换?

时间:2012-02-25 02:31:40

标签: vim

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

例如:

问题:Translate Part of a Line
我可以找出搜索模式: /\[\[\(http\)\@!.\{-}\]\]
但我无法轻易找出替换命令。

3 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:0)

您可以使用'c'标志告诉Vim在更换前确认。它突出显示并停止在它找到给定模式的每个匹配之前询问。

:%s/foo/bar/gc

答案 2 :(得分:0)

我刚想通了:

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

但还有更好的方法吗?