如何在vim中找到并替换#(井)字符串?

时间:2018-05-14 12:06:45

标签: vim sed

我有一个文件,其中有######### Utility Functions #######之类的评论。我正在尝试将其清理干净并使其成为类似# Utility Functions #的东西,这需要我匹配一串超过一磅的符号并用一个单一的符号替换它。

我试过以下

:%s/#+/#/gc
:%s/"#"+/#/gc
:%s/\#+/#/gc
:%s/(#)+/#/gc

还有更多。据我所知,#具有特殊的意义,可以匹配多个字符,如*但反方向。这意味着我必须以某种方式逃脱它以实现上述目标。任何帮助表示赞赏。

3 个答案:

答案 0 :(得分:2)

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

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

大多数正则表达式都有“多个”的快捷方式:+所以

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

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

答案 1 :(得分:2)

不,#没有特殊含义,+使用它只是一个普通的+。您需要转义+以使其成为“多个”:

:%s/#\+/#/g

请参阅:help multi

答案 2 :(得分:0)

您可以尝试使用引号。

sed 's/"#"//g'