vim
Найти и заменить
Поиск…
Заменить команду
Эта команда:
:s/foo/bar/g
заменяет каждое вхождение foo bar на текущей строке.
fool around with a foodie
становится
barl around with a bardie
Если вы оставите последний /g , он заменит первое появление на линии. Например,
:s/foo/bar
На предыдущей строке
barl around with a foodie
Эта команда:
:5,10s/foo/bar/g
выполняет ту же замену в строках с 5 по 10.
Эта команда
:5,$s/foo/bar/g
выполняет ту же замену из строки 5 в конец файла.
Эта команда:
:%s/foo/bar/g
выполняет ту же замену на весь буфер.
Если вы находитесь в визуальном режиме и попадете в двоеточие, появится символ '<,'> . Затем вы можете сделать это
:'<,'>s/foo/bar/g
и подстановка происходит в пределах вашего выбора визуального режима.
Эта команда:
:%s/foo/bar/gc
эквивалентно приведенной выше команде, но запрашивает подтверждение при каждом возникновении с помощью флага /c (для «подтверждения»).
См . :help :s и :help :s_flags .
См. Также этот раздел о диапазонах командной строки .
Заменить с регулярными выражениями или без них
Эта команда подстановки может использовать регулярные выражения и будет соответствовать любому экземпляру foo за которым следует любой (один) символ с периода . в регулярных выражениях соответствует любому символу, поэтому следующая команда будет соответствовать всем экземплярам foo за которыми следует любой символ в текущей строке.
:s/foo./bar/g
1 fooing fooes fool foobar foosup
станет
1 barng bars bar barar barup
Если вы хотите совместить литерал . вы можете избежать этого в поле поиска с помощью обратной косой черты \ .
:s/foo\./bar/g
1 fooing fooes foo.l foo.bar foosup
станет
1 fooing fooes barl barbar foosup
Или отключите все сопоставления шаблонов, выполнив команду s с no .
:sno/foo./bar/g
1 fooing fooes foo.l foo.bar foosup
вызовет ошибку
E486: Pattern not found