Простой vim-ответ:
- Открыть файл -
vim filename
- Установить вспомогательную переменную -
:let num=1
- Выполнить замену -
:g/href/execute printf("normal! citx%d", num) | let num=num+1
Команда :global
позволяет выполнить операцию со всеми строками, соответствующими шаблону (в данном случае href
).Операция, которую мы хотим сделать, - это изменить текст внутри тега <a>
на x
, за которым следует содержимое num
, и увеличить num
.
execute
позволяет нам построить командную строкуиз струн;Я часто комбинирую с printf()
, потому что мне легче читать.normal!
- это Ex-команда, которая позволяет нам выполнять команды в нормальном режиме.cit
- это vim'ism для «изменения внутри тега» из обычного режима.Затем мы просто подаем ему соответствующий текст замены (x%d
) и увеличиваем счетчик.
Если вам интересно, как я это придумал, это довольно устоявшийся шаблон среди виммеров.На практике мне потребовалось около минуты, чтобы выполнить всю последовательность (быстрее, если бы я использовал ее чаще), так что это не один из тех ответов «потратьте 30 минут, пытаясь написать хорошее регулярное выражение» - это может бытьсделано в сеансе редактирования в реальном времени без особых размышлений, если человек, занимающийся редактированием, хорошо разбирается в основах vim.