如何用出现 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
一切都在标题中。
我可以举个例子:假设我想用 30 次 c
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