:s/\(string\)\d\+/\1\=submatch(0)+10
Du bist in der Nähe:
- Sie können keinen normalen Ersatz (
\1
) und mischen:help sub-replace-expression
. Wenn Sie letzteres verwenden, muss der gesamte Ersatz ein Ausdruck sein. - Um die Anzahl zu erhöhen, muss sie separat erfasst werden.
submatch(0)
ist das ganze Spiel; Sie können es nicht einfach hinzufügen10
. - Wenn Sie alle Vorkommen ersetzen möchten, müssen Sie noch das
/g
Flag und ein hinzufügen:[range]
. Andernfalls wird nur die erste Übereinstimmung der aktuellen Zeile erhöht.
Hier ist eine Variante mit vollständiger Erfassung:
:%substitute/\(string\)\(\d\+\)/\=submatch(1) . (submatch(2) + 10)/g
Da Sie nichts mit dem string
Präfix tun, können wir alternativ darauf hinweisen (aber nicht einschließen) via :help /\zs
; Wir brauchen dann keine Capture:
:%substitute/string\zs\d\+/\=submatch(0) + 10/g