Например, если бы я хотел найти и заменить на строки, содержащие обратную или прямую косую черту, как бы это было выполнено в vim?Спасибо!
Примеры поиска и замены: :%s/foo/bar/g
:%s/foo/bar/g
что, если я хочу найти все вхождения <dog/> и заменить его на <cat\>
<dog/>
<cat\>
Точно так же, как вы экранируете символы в большинстве программ linuxy, с обратной косой чертой:
:%s/<dog\/>/<cat\\>
Но учтите, что вместо этого вы можете выбрать другой разделитель:
:%s@<doc/>@<cat\\>@
Это избавит вас от необходимости печатать все эти трудоемкие, запутанные обратные слеши в шаблонах с кучей косых черт.
Из документации :
Вместо /, который окружает строку шаблона и замены, вы может использовать любой другой однобайтовый символ, но не алфавитно-цифровой символ, \, " или |. Это полезно, если вы хотите включить / в поиск строка шаблона или замены.
/
\
"
|
%s:<dog/>:<cat>
Вы можете заменить разделители /, если они становятся раздражающими для определенных шаблонов.
Цитировать их с помощью обратной косой черты. Кроме того, часто помогает использовать другой разделитель, кроме косой черты.
:%s#<dog/>#<cat\\>#
или если вы используете косую черту в качестве разделителя команды замены
:%s/<dog\/>/<cat\\>/
Синтаксис:
:%s/<dog\/>/<cat\\>/g
Я искал нечто подобное, чтобы искать значения регистра, содержащие символ / (для записи макроса). Решением было поиск с использованием токена ? вместо /.
?
косая черта с обратной косой чертой
/(<- the prompt)\/\*
поэтому после ввода это выглядит как
/\/\*