Як уникнути зворотних скісних рисок і косих рисок уперед у VIM знаходити / шукати?


96

Наприклад, якби я хотів знайти і замінити на рядки, що містять косу риску назад або вперед, як би це було виконано у vim? Дякую!

Приклади пошуку та заміни: :%s/foo/bar/g

що, якби я хотів знайти всі випадки <dog/>і замінити його на<cat\>


3
Не точна відповідь, але, мабуть, вам слід прочитати: help magic
Том Морріс

+1 Том, як правило, найбільш розумне рішення при роботі з більш ніж тривіальним регулярним виразом.
Ренді Морріс,

@Tom @Randy, однак ... vi --helpна моєму сервері НЕ надає пояснення втечі спеціальних символів ... саме тому люди приходять до stackoverflow для початку ...
aequalsb

@aequalsb :help magic- це те, що ви вводите всередині vim. Це не аргумент командного рядка для vim.
doubleDown

Відповіді:


150

Таким же чином ви уникаєте символів більшості де-небудь ще в програмах linuxy, з косою рискою:

:%s/<dog\/>/<cat\\>

Але зверніть увагу, що замість цього ви можете вибрати інший роздільник:

:%s@<doc/>@<cat\\>@

Це заощаджує, щоб ви все друкували всі ці трудомісткі, плутані зворотні скісні риски у шаблонах з тонною скісних рисок.

З документації :

Замість того , /який оточує шаблон і рядок заміни, ви можете використовувати будь-який інший однобайтні характер, але не алфавітно - цифровий символ, \, "або |. Це корисно, якщо ви хочете включити a /у шаблон пошуку або рядок заміни.


1
Тож він автоматично визначить обраний вами роздільник?
шторм

11
Так. Символ після символу sприймається за роздільник. Я не можу зрозуміти, де я знайшов список у документації, але я майже впевнений, що принаймні /:;*%@#дійсний.
Cascabel

Це стане в нагоді при заміні \ в / у файл із великою кількістю шляхів у стилі Windows. Дякую.
Ісаак Некіттепас,

Щоб перейти до цього повідомлення в документації, скористайтесь: h e146
jcollado

Не уявляв, що ви можете змінити роздільник! Це величезне - дякую.
Brettins

22
%s:<dog/>:<cat>

Ви можете замінити / роздільники, якщо вони дратують певні моделі.


3
+1 для :роздільника. Я не знав, що ти можеш цим скористатися. Я завжди використовував @у часи "врятування"
Джеффрі Хосе

8

Процитуйте їх зворотною рискою рискою. Крім того, часто допомагає використовувати інший роздільник, крім скісної риски.

 :%s#<dog/>#<cat\\>#

або якщо вам доведеться використовувати скісну риску як замінюючий роздільник команди

 :%s/<dog\/>/<cat\\>/


2

Я шукав щось подібне для пошуку значень реєстру, що містять /символ (для запису макросу). Рішенням було пошук, використовуючи ?маркер замість /.


Зверніть увагу, що ?виконуватиметься зворотний пошук, і це не те саме.
Мартін Турной

-1

коса коса риса зворотна коса риска зірка

/(<- the prompt)\/\*

так що після введення це виглядає так

/\/\*

1
Чим ця відповідь відрізняється від тих, що були на сайті близько шести років?
Мартін Турной
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.