Интерактивный поиск / замена регулярных выражений в Vim? - PullRequest
241 голосов
/ 03 февраля 2009

Я знаю регулярное выражение для глобальной замены,

     %s/old/new/g

Как вы делаете интерактивный поиск-замену в Vim ?

Ответы [ 7 ]

417 голосов
/ 03 февраля 2009

Добавьте флаг c (в командной строке vim):

:%s/old/new/gc

будет выдавать подсказку «да / нет» при каждом появлении «old».

Встроенная справка Vim предлагает полезную информацию о параметрах, доступных после выбора замены подтверждением. Использование:

:h :s

Затем перейдите к разделу параметров подтверждения. Снимок экрана ниже:

Text that says

Например, чтобы заменить это и все оставшиеся совпадения, используйте a.

73 голосов
/ 26 января 2012

Марк Бик указал, используя:

%s/old/new/gc

для глобального поиска замените подтверждением для каждой замены. Но мне также нравится интерактивно проверять, что старый текст будет соответствовать правильно. Сначала я выполняю поиск с помощью регулярного выражения, а затем повторно использую этот шаблон:

/old.pattern.to.match
%s//replacement/gc

s// будет использовать последний шаблон поиска.

19 голосов
/ 03 февраля 2009

Я думаю, что вы ищете c, например, s/abc/123/gc, это заставит VIM подтвердить замену. См .: help: заменить для получения дополнительной информации.

9 голосов
/ 04 февраля 2009

Если вы просто хотите посчитать количество вхождений 'abc', тогда вы можете сделать %s/abc//gn. Это ничего не заменяет, а просто сообщает количество появлений 'abc'.

9 голосов
/ 03 февраля 2009

Я обычно использую команду поиска / замены / следующего / повтора: -)

/old<CR>3snew<ESC>n.n.n.n.n.n.n.

Это find "old", substitute 3 characters for "new", find next, repeat substitute и т. Д.

Это боль для массивных замен, но она позволяет вам выборочно игнорировать некоторые вхождения старых (просто снова нажав n, чтобы найти следующий вместо ., чтобы повторить замену).

3 голосов
/ 17 сентября 2015

Если вашему тексту замены нужно изменить для каждого соответствующего вхождения (т.е. не просто выбрав Да / Нет, чтобы применить единственную замену), вы можете использовать созданный мной плагин Vim под названием interactive-replace .

0 голосов
/ 14 марта 2019

Neovim теперь имеет функцию предварительного просмотра замены:

enter image description here

Изображение взято с: https://medium.com/@eric.burel/stop-using-open-source-5cb19baca44d Документация к функции: https://neovim.io/doc/user/options.html#'inccommand'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...