Найти и заменить внутри выделения в `vi` - PullRequest
57 голосов
/ 21 апреля 2009

Как мне выполнить поиск и замену в выделении в vi?

Ответы [ 5 ]

79 голосов
/ 09 июля 2009

Большинство других решений, предлагаемых здесь, работают по ВСЕЙ строке, в которой происходит выбор, что может не соответствовать вашим ожиданиям.

Для поиска и замены ТОЛЬКО в выделении, сначала визуально выделите текст, а затем используйте команду, подобную этой:

:%s/\%VSEARCH/REPLACE/g

Это будет выполнять поиск и замену только в визуально выбранном разделе, заменяя ПОИСК на ЗАМЕНА. Если выбрано более одной строки, это также будет работать с несколькими строками.

67 голосов
/ 21 апреля 2009

Выделите текст в визуальном режиме (я полагаю, это то, что вы делаете), затем нажмите :, чтобы начать вводить команду, и вы увидите что-то подобное в командной строке:

:'<,'>

Это означает, что команда будет применяться к выбору. Затем введите s/search/replace/ и нажмите Enter. (Добавьте g после третьей косой черты, если вы хотите заменить все совпадения, и c, если вы хотите подтверждение для каждой замены)

17 голосов
/ 21 апреля 2009

Если вы использовали Визуальный режим для выбора, то:

:'<,'>s/regex/replacement/options

VIM автоматически установит диапазон ('<,'>), если вы перейдете в режим командной строки (нажав ':') из визуального режима.

7 голосов
/ 21 апреля 2009

Дополнительная помощь здесь Поиск и замена в визуальном отборе

0 голосов
/ 21 апреля 2009

Если вы хотите выполнить глобальный поиск и замену (с необязательными регулярными выражениями) всех экземпляров в файле, я бы сделал следующее:

:%s/foo/bar/g

Пропустите g для локальной замены.

...