Я знаю регулярное выражение для выполнения глобальной замены,
%s/old/new/g
Как вы собираетесь выполнять интерактивный поиск-замену в Vim?
Я знаю регулярное выражение для выполнения глобальной замены,
%s/old/new/g
Как вы собираетесь выполнять интерактивный поиск-замену в Vim?
Добавьте флаг c (в командной строке vim):
:%s/old/new/gc
выдаст подсказку "да/нет" при каждом появлении слова "старый".
Встроенная справка Vim предлагает полезную информацию о параметрах, доступных после выбора замены с подтверждением. Использование:
:h :s
Затем перейдите к разделу подтверждения параметров. Снимок экрана ниже:
Например, чтобы заменить это и все оставшиеся матчи, использовать. a
Марк Бик указал, используя:
%s/old/new/gc
для глобального поиска заменить на подтверждение для каждой подстановки. Но я также наслаждаюсь интерактивной проверкой того, что старый текст будет соответствовать правильно. Сначала я выполняю поиск с регулярным выражением, затем повторно использую этот шаблон:
/old.pattern.to.match
%s//replacement/gc
s//
будет использовать последний шаблон поиска.
Я думаю, что вы ищете c
, например s/abc/123/gc
, это заставит VIM подтвердить замены. См.: Help: замените дополнительную информацию.
Если вы просто хотите подсчитать количество вхождений "abc", вы можете сделать %s/abc//gn
. Это ничего не заменяет, а просто сообщает количество вхождений "abc".
Обычно я использую команду find/substitute/next/repeat: -)
/old<CR>3snew<ESC>n.n.n.n.n.n.n.
Это find "old"
, substitute 3 characters for "new"
, find next
, repeat substitute
и т.д.
Это боль для массивных замещений, но позволяет выборочно игнорировать некоторые вхождения старых (просто нажав n
снова, чтобы найти следующий вместо .
, чтобы повторить замещение).
Если ваш текст замены должен измениться для каждого совпадающего события (т.е. не просто выбрать Да/Нет для применения сингулярной замены), вы можете использовать плагин Vim, который я сделал под названием interactive-replace.