Добавить постоянное значение в числовой атрибут XML - PullRequest
1 голос
/ 14 января 2011

Фон

Добавить постоянное значение к числам, сопоставленным с регулярным выражением, используя vim (gvim).

Проблема

Следующее регулярное выражение будет соответствовать width="32":

/width="\([0-9]\{2\}\)"

Вопрос

Как заменить числовое значение атрибута width результатами математического выражения, использующего значение атрибута? Например, я хотел бы выполнить следующую глобальную замену:

:%s/width="\([0-9]\{2\}\)"/width="\1+10"/g

Это даст width="42" для width="32" и width="105" для width="95".

Обновление

Похоже, что это невозможно сделать с помощью одного регулярного выражения - есть ли vim-way?

Спасибо!

1 Ответ

2 голосов
/ 15 января 2011
%s/width="\zs\d\{2}\ze"/\=submatch(0)+10/g

См. Документацию для /\zs, /\ze, sub-replace-expression и submatch().

...