replace - Vim substitute with ascending numbers inside a pattern -
i have pattern this:
word0word word0word word0word
and need number ocurrences of pattern this:
word1word word2word word3word
i found can this:
:let @a=1 | %s/word0/\='word'.(@a+setreg('a',@a+1))/g
but omits rest of pattern (the second "word", need include identify pattern). there way include rest of pattern? tried:
:let @a=1 | %s/word0word/\='word'.(@a+setreg('a',@a+1))'word'/g
but returns error. thought combining \zs
, \ze
, i'm not sure how approach that.
in second pattern you're missing .
(to indicate concatenation).
work :
:let @a=1 | %s/word0word/\='word'.(@a+setreg('a',@a+1)).'word'/g " 1 --^
note if want use capture groups in subreplace expression you'll need use submatch(x)
instead of \x
(replace x
number of match, starting @ 1
) :
:let @a=1 | %s/\vword0(\w+)/\='word'.(@a+setreg('a',@a+1)).submatch(1)/g
see :h sub-replace-\=
more informations on using subreplace expressions.
Comments
Post a Comment