2010-03-17 14 views
58

Na przykład, jeśli chciałem znaleźć i zastąpić ciągami zawierającymi ukośniki w tył lub w przód, w jaki sposób można to osiągnąć w vim? Dziękuję Ci!W jaki sposób można uciec w ukośnikach odwrotnych i ukośnikach w wynikach wyszukiwania/wyszukiwania VIM?

Przykłady Znajdź & Wymienić jest: :%s/foo/bar/g

co jeśli chcę znaleźć wszystkie wystąpienia <dog/> i zastąpić go <cat\>

+3

Nie ściśle odpowiedź, ale prawdopodobnie powinien przeczytać: pomoc magiczna –

+0

+1 Tom, generalnie najbardziej powszechny rozwiązanie przy pracy z trywialnym regexem. –

+0

@Tom @Randy jednak ... 'vi --help' na moim serwerze NIE dostarcza wyjaśnień na temat unikania znaków specjalnych ... dlatego ludzie przychodzą do stackoverflow na początek ... – aequalsb

Odpowiedz

100

sam sposób można uciec znaków najbardziej nigdzie indziej w programach linuxy, z odwrotnym ukośnikiem:

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

Ale pamiętaj, że możesz zamiast tego wybrać inny separator:

:%[email protected]<doc/>@<cat\\>@ 

Umożliwia to zapisanie wszystkich tych czasochłonnych, mylących ukośników w deseniach z dużą ilością ukośników.

Z dokumentacji:

Zamiast „/”, który otacza ciąg wzór i zastępczą można użyć dowolnego innego znaku jednobajtowych, ale nie znakiem alfanumerycznym, „\”, „"”lub«|». jest to przydatne, jeśli chcesz dołączyć a«/»w wyszukiwarce wzór lub wymiana łańcucha

+0

Więc automatycznie wykryje wybrany ogranicznik? – stormist

+6

Tak. Postać po 's' jest uważana za ogranicznik. Nie wiem, gdzie znalazłem listę w dokumentacji, ale jestem pewien, że przynajmniej '/:; *% @ # 'są prawidłowe. – Cascabel

+0

Ah, znalazłem to. Edytowane! – Cascabel

6

cytując je odwrotnym ukośnikiem. Poza tym często pomaga użyć innego ogranicznika oprócz ukośnika.

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

lub jeśli trzeba użyć ukośnika jako separatora poleceń substytut

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

można wymienić/ograniczniki jeśli stać. Hałas dla pewnych wzorców.

+2

+1 dla ogranicznika ':'. Nie wiedziałem, że możesz tego użyć. Zawsze używałam '@ 'w czasach' ucieczki-bałaganu ' –

2

Składnia jest następująca:

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

szukałem czegoś podobnego, aby szukać wartości rejestrów zawierających / znak (nagrywanie makra). Rozwiązaniem było wyszukiwanie przy użyciu tokena ? zamiast /.

+0

. Zauważ, że'? 'Zrobi wyszukiwanie wstecz i nie będzie takie samo. – Carpetsmoker

-1

backslash gwiazda ukośnik odwrotny ukośnik

/(<- the prompt)\/\* 

więc po wpisaniu wygląda

/\/\* 
+1

Czym różni się ta odpowiedź od tych, które były dostępne na stronie od blisko sześciu lat? – Carpetsmoker

Powiązane problemy