如何在vim中替换括号

38

在 Vim 中,我有:

simulación (fig.),pretexto (fig.),excusa (fig.).

我的目标是:

simulación ,pretexto ,excusa .

我尝试使用::%s/\(fig\.\)//g,但它不起作用。


1
您的命令看起来没问题。当您运行该命令时,VIM是否显示错误信息? - Marcin
1
我看到 SO 解析器在您第一次提交问题时隐藏了反斜杠,所以我们感到困惑也就不奇怪了。 - Marcin
2
不要试图使用嵌套括号,这个问题无法通过正则表达式解决,因为它们不支持计数(或堆栈或递归)。 - wilhelmtell
3
你真的想保留那个错放的空格吗?更好的目标应该是“模拟、借口、托辞”。 - Svante
@Marcin 和 @ennuikiller:抱歉,是我的错。我忘记做个注释了。 @Svante。谢谢你,Svante,我也去掉了空格。但是在第二步中。这是一个很长的文件,有时我需要在空格的位置放置下划线,有时不需要-因为我的任务。 - Jogusa
3个回答

63

Vim默认情况下不需要转义括号。尝试:

:%s/(fig\.)//g

参见:

:help magic

编辑

添加了点号的反斜杠转义。


1
在这种情况下,Vim不是使用转义括号之间的内容作为组,然后将其丢弃吗?这是一个重要的区别。 - Adriano Varoli Piazza
1
@Adriano:确实如此,这不是@Jogusa想要的。 - DrAl
非常感谢,它有效了:-) 也谢谢您的第二个提示。 - Jogusa

8

2
如果您不转义点(请参见我的和Adriano的编辑:我们都这样做!),这也将匹配(figx)。 - DrAl

3
在Vim 7.2(WinXP)上,你使用的命令只删除了“fig.”,但是没有删除括号。 使用%s/(fig\.)//g可以得到预期的结果。 编辑:也要转义点,因为它会匹配任何字符,而不仅仅是一个点。

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