Из :h E65
рисунка видно, что Vim не позволяет использовать более 9 групп захвата в команде замещения.
Например, будет работать следующая команда:
s/\v(a)(b)(c)(d)(e)(f)(g)(h)(i)/\9\8\7\6\5\4\3\2\1
Но этот с еще одной группой захвата потерпит неудачу:
s/\v(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)/\10\9\8\7\6\5\4\3\2\1
Мой вопрос не о том, почему он терпит неудачу (это жесткое ограничение Vim), а о том, почему Vim вообще имеет это ограничение?
Кроме того, я знаю, что реальное регулярное выражение с более чем 9 группами захвата, вероятно, было бы довольно чудовищно для чтения и поддержки, но мне все еще любопытно.
sed
: s/.../.../3
заменяет только 3-е вхождение шаблона. Вероятно, эта функция мне больше всего не хватает в Vim.
\%()
.