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