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

csu*_*fer 5 vim sed

我有一个文件,其中包含诸如######### Utility Functions #######. 我正在尝试清理它并使其成为# Utility Functions #需要我匹配一串超过一磅符号的字符串并将其替换为单个磅符号。

我已经尝试了以下

:%s/#+/#/gc
:%s/"#"+/#/gc
:%s/\#+/#/gc
:%s/(#)+/#/gc
Run Code Online (Sandbox Code Playgroud)

还有一堆。据我了解,# 匹配多个字符(如 * 但方向相反)具有特殊意义。这意味着我必须以某种方式逃避它才能实现上述目标。任何帮助表示赞赏。

Dok*_*ldo 3

尝试一下::%s/\v#{2,}/#/g

#{2,} " 2, means at least two
Run Code Online (Sandbox Code Playgroud)

在大多数正则表达式风格中,有一个“多个”的快捷方式:+所以

:%s/\v#+/#/g
Run Code Online (Sandbox Code Playgroud)

如果您使用“非常神奇”( \v),也可以,请参阅:h magic