Как добиться увеличения с заменой vim? - PullRequest
3 голосов
/ 31 января 2012

Я хочу заменить код ниже:

<input name="rating" id="rating">
<input name="rating" id="rating">
<input name="rating" id="rating">
<input name="rating" id="rating">
...
<input name="rating" id="rating">

в:

<input name="rating1" id="rating1">
<input name="rating2" id="rating2">
<input name="rating3" id="rating3">
<input name="rating4" id="rating4">
...
<input name="rating100" id="rating100">

Как добиться увеличения с заменой vim?

Спасибо!

Ответы [ 3 ]

13 голосов
/ 31 января 2012

Я бы начал с одной строки:

<input name="rating1" id="rating1">

Затем запись макроса q q , который восстанавливает всю строку y y , вставляет его ниже p и увеличивает два числа Ctrl - a ш Ctrl а . Прекратить запись макроса q .

Затем запустить макрос 98 раз 98@q.

Но потом я потратил слишком много времени, играя в VimGolf !

4 голосов
/ 31 января 2012

Предполагая, что это всегда текущий номер строки, который вы хотите добавить к слову «рейтинг», вы можете использовать это:

:%s#rating\zs#\=line(".")#g
1 голос
/ 31 января 2012

В Vim есть простой и эффективный метод для реализации встречных замен.Я предложил это в моем ответе на вопрос " gVim найти / заменить счетчиком ".Чтобы понять идею, посмотрите этот ответ, а также мои ответы на связанные вопросы: « Используя Vim, как использовать переменную для хранения количества найденных паттернов? » и « Поиск и замена CSV ".

Аналогично, проблема, описанная в этом вопросе, может быть решена командой

:let n=[0] | %s/="rating\zs\ze"/\=map(n,'v:val+1')/g
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...