1

У меня есть большой HTML-файл, в котором мне нужно найти и заменить более 2000 вхождений определенной строки. Я мог бы сделать это вручную, но я уверен, что есть мощная команда поиска и замены Vim, которая могла бы сделать это.

У меня есть сноски, которые мне нужны для замены определенной части текста гиперссылки.

Ссылка на сноску отформатирована вот так:

&ltsup>&lta href='#footnote-2020'>2020&lt/a>&lt/sup>

Существует более 2000 сносок, каждая из которых обозначена как 1-2020. Я хотел бы удалить текст привязки (2020 в приведенном выше примере) и заменить его на *. Я хотел бы оставить текст href «# footnote-2020» таким, каким он есть, чтобы сохранить ссылку.

Есть ли опытные пользователи Vim, которые могли бы предложить команду быстрого поиска и замены?

Спасибо!

1 ответ1

1

Попробуй это:

:%s,\(<a href='#footnote-\d\+'>\)\d\+\(</a>\),\1*\2,g

Чтобы сломать это:

% - работать со всем файлом (это специальный диапазон)
,...,..., - Обычно разделитель для: заменитель /, но это может быть что угодно. Я использовал запятые из-за тега </a>.
\(...\) - Создать подвыражение для использования в шаблоне замены. Два из них используются.
\d\+ - Соответствует любой цифре, и \+ заставляет ее совпадать с одним или несколькими.
\1 / \2 - В шаблоне замены подставляется первое и второе подвыражение, упомянутое ранее.
g - Флаг "g" после шаблона замены говорит, что он должен работать глобально в каждой строке, а не только в первом совпадении в строке.

Все это и многое другое объясняется в :help pattern.txt но это может быть ошеломляющим. Существует книга под названием "Освоение регулярных выражений", которая может быть полезна.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .