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

How to replace n occurrences of a char with n-m occurrences of the same char

一切都在标题中。 我可以举个例子:假设我想用 30 次 c

替换 75 次 c

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

一种方法是使用宏。

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

然后

x@q

x是你要替换多少次。

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

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

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

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

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

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