如何用n-m次出现的相同char替换n次出现的char

时间:2015-01-05 13:23:28

标签: vim

所有都在标题中。 我举个例子:假设我要将c替换75次c

我知道这就像:%s#c\{75}#???#g,但我找不到???部分

3 个答案:

答案 0 :(得分:3)

这种替换应该可以解决问题:

:%s/\(c\)\{75}/\=repeat(submatch(1),30)/g

该模式包含在一个组中,以便与submatch()一起使用,然后使用repeat()重复30次。

答案 1 :(得分:1)

一种方法是使用宏。

qq/c\{75}<cr>45xq

然后

x@q

x是您想要替换的次数。

如果您不知道时间,可以使用递归宏:qq/c\{75}<cr>45x@qq然后@q

答案 2 :(得分:1)

用(n-m)个字符替换(n-m)+ m个字符怎么样?

:%s;\(c\{45}\)c\{30};\1;g