Vim - Поиск и замена результатов - PullRequest
15 голосов
/ 03 ноября 2010

Мне становится все удобнее с Vim через несколько месяцев.НО, есть только одна простая функция, на которую я не могу получить ответ из Интернета.То есть «Поиск и замена результатов».Проблема в том, что я знаю:

: / ключевое слово для поиска, и нажатие клавиши ввода «ключевое слово» будет подсвечено (конечно, с установленным hlsearch) n или N для навигации

:% s/ keyword / new_keyword / g для замены всех вхождений ключевого слова на new_keyword.

НО, я бы подумал, что должен быть способ поиска и замены соответствующего ключевого слова (выделено) на любое новое ключевое слово БЕЗ выполнения ":% s / keyword / new_keyword / g ", которая часто набирает текст, учитывая, что поиск и замена - это такая повседневная функция.

Любые ответы / комментарии будут высоко оценены!

Ответы [ 4 ]

31 голосов
/ 03 ноября 2010

Если вы уже выполнили поиск, вы можете выполнить замену для того же шаблона, просто пропустив шаблон в команде замены. например:

/keyword

выполняет поиск по ключевому слову, а затем:

:%s//new_keyword/g

заменит все вхождения "ключевого слова" на "new_keyword".

3 голосов
/ 03 ноября 2010

Поиск и использование команды «точка» (вы не имели в виду, что используете команду «точка», поэтому я выделил ее), чтобы повторить последнее действие ввода, - моя лучшая ставка.

Я использую s /// g для поиска и замены.

2 голосов
/ 03 ноября 2010

Ну, так как # ключевое слово # и # new_keyword # учитывают большинство символов, и вам нужен какой-то способ различения между ними (т. Е. Символ в vim или вкладка между полями ввода в диалоге в другом редакторе),у вас осталось, может быть, четыре или пять нажатий на клавиши.

Так что я думаю, что вы, вероятно, переоцениваете количество нажатий клавиш, а также забываете, что (1) это становится очень естественным, и (2) работа таким образомВы также можете естественным образом изменить выполняемое действие, указав другой диапазон или флаг опции.

Но вы можете сократить количество нажатий клавиш.Если вы хотите, вы можете сопоставить ключ для автоматического вызова командной строки с уже установленным% s /.Например:

nmap s :%s/

Приведенная выше команда переназначит 's' (я не рекомендую переназначать этот ключ, но это дает идею) и настроит вас для вставки ключевого слова.

Кроме того, вы можете установить для параметра 'gdefault' значение по умолчанию для замены несколько раз на строку.Это позволяет вам пропустить окончание '/ g' при нажатии клавиш:

set gdefault

См. Раздел "hgdefault" для справки по этому параметру.

В конце я бы сказал, что просто получитьиспользуется по умолчанию, как это работает, потому что использование этого способа позволяет вам сохранить ту же самую базовую операцию, когда вы хотите указать различные диапазоны или флаги опций, и создание новой специальной карты - это просто еще одна вещь, которую нужно запомнить.Возможно, стоит установить gdefault, если вы считаете, что хотите этого делать большую часть времени, добавление флага / g в конце, когда установлено gdefault, приводит к отключению / g.,,

1 голос
/ 03 ноября 2010

Перейти к первому выделенному слову, затем записать макрос для замены слова и перехода к следующему, например:

gg
n
qq
caw new_word^[
n
q
@q
@@
@@
...
...