Aus können :h E65
wir ersehen, dass Vim nicht mehr als 9 Erfassungsgruppen in einem Ersetzungsbefehl zulässt.
Zum Beispiel wird der folgende Befehl funktionieren:
s/\v(a)(b)(c)(d)(e)(f)(g)(h)(i)/\9\8\7\6\5\4\3\2\1
Aber diese mit einer weiteren Erfassungsgruppe wird fehlschlagen:
s/\v(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)/\10\9\8\7\6\5\4\3\2\1
Meine Frage ist nicht, warum es fehlschlägt (es ist ein hartes Vim-Limit), sondern warum hat Vim dieses Limit überhaupt?
Ich bin mir auch bewusst, dass ein Regex im echten Leben mit mehr als 9 Capture-Gruppen wahrscheinlich ziemlich monströs zu lesen und zu warten wäre, aber ich bin immer noch neugierig.
sed
: s/.../.../3
würde nur das 3. Vorkommen des Musters ersetzen. Dies ist wahrscheinlich die Funktion, die ich in Vim am meisten vermisse.
\%()
.