如何在vim中查找和替换一串#(井号)字符的字符串?

5
我有一个文件,其中我有像######### 实用函数 #######这样的注释。 我正在尝试清理它并将其变成# 实用函数 #,这需要我匹配超过一个井号的字符串并用单个井号替换它。
我尝试了以下方法:
:%s/#+/#/gc
:%s/"#"+/#/gc
:%s/\#+/#/gc
:%s/(#)+/#/gc

还有很多其他内容。据我所知,#号具有特殊意义,可以匹配多个字符,类似于*,但方向相反。这意味着我必须以某种方式转义它才能实现上述目的。感谢任何帮助。


3
%s/\v\#+/#/gc - Lieven Keersmaekers
整洁,非常神奇的技巧! - csurfer
3个回答

3

尝试这样做::%s/\v#{2,}/#/g

#{2,} " 2, means at least two

大多数正则表达式中都有一个“多个”的快捷方式:+,因此:

:%s/\v#+/#/g

如果使用"非常魔术"(\v),:h magic也可以正常工作。


2
不,# 没有特殊含义,“+” 在您使用时只是普通的 “+”。您需要对 “+” 进行转义以使其成为“多个”:
:%s/#\+/#/g

请查看:help multi

0

你可以尝试使用引号。

sed 's/"#"//g'

1
搜索字面字符串 "#" - Benjamin W.

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