Как я могу найти и заменить в пределах выбора в vi
?
Найти и заменить в пределах выбора в `vi`
Ответ 1
Выберите текст в визуальном режиме (я предполагаю, что вы делаете), затем нажмите :
, чтобы начать вводить команду, вы увидите что-то вроде этого в командной строке:
:'<,'>
Это означает, что команда будет применяться к выбору. Затем введите s/search/replace/
и нажмите enter. (Добавьте g
после третьего косая черта, если вы хотите заменить все совпадения, и c
, если вы хотите получить подтверждение для каждой замены)
Ответ 2
Большинство других решений, предлагаемых здесь, работают над линией ENTIRE, в которой происходит выбор, что может быть не таким, каким вы хотите.
Для поиска и замены ТОЛЬКО в выборе сначала визуально выберите текст, а затем используйте команду:
:%s/\%VSEARCH/REPLACE/g
Это приведет к поиску и замене только в визуально выбранном разделе, заменив SEARCH с помощью REPLACE. Если вы выбрали более одной строки, это будет работать и на нескольких строках.
Ответ 3
Если вы использовали Визуальный режим для выбора, то:
:'<,'>s/regex/replacement/options
VIM автоматически поместит диапазон ('<,'>
), если вы перейдете в режим командной строки (нажав ':'
) из визуального режима.
Ответ 4
Дополнительная помощь здесь Поиск и замена в визуальном выборе
Ответ 5
Если вы хотите выполнить глобальный поиск и заменить (с необязательными регулярными выражениями) для всех экземпляров в файле, я бы сделал следующее:
:%s/foo/bar/g
Опустите g, чтобы выполнить локальную замену.