Alternatywą jest unikanie ukośników podczas wyszukiwania i zamiana długich ciągów znaków


10

Czy istnieje jakaś alternatywa w wyszukiwaniu vim i zamianie ciągów, niż konieczność ucieczki od każdego znaku specjalnego w ciągu.

Na przykład, jeśli chcę dopasować następujący ciąg i zastąpić czymś

[ERROR] Login unsucessful

Więc muszę to zrobić

:%s/\[ERROR\]\ Login\ unsucessful/something/g

I staje się o wiele bardziej brzydsze i bolesne w przypadku złożonych ciągów znaków zawierających wiele znaków specjalnych

Chciałbym zrobić coś takiego

:%s/"[ERROR] Login unsucessful"/something/g

co pozwoliłoby uniknąć ucieczki. Czy jest jakaś funkcja tego typu?

Odpowiedzi:


16

Możesz użyć very-nomagicprzełącznika. Zobacz :h \Vszczegóły. To by ci dało %s/\V[ERROR] Login unsuccessful/something/g. Jest też nomagicprzełącznik \M, który jest lżejszą wersją \Vi nie wydaje się być powszechnie używany.

Pamiętaj też, że nie musisz uciekać spacjami, tak jak w przykładzie, nawet jeśli nie używasz \V.


Dzięki. Dokładnie to, czego chciałem. nie dostałem tego podczas wyszukiwania w Google, nie wiem dlaczego.
MohitC

2
@MohitC mapować /aby /\vwłączyć „bardzo magia” dla większości wyszukiwań, więc mam zmapowany //do /rozpocząć wyszukiwanie niezmodyfikowanej (przydatne dla przeżywa historię wyszukiwania ignorując modyfikatory) i /v/aby /\Vszybko wyłączyć wszystkie magiczne dla poszukiwań.
Kyle Strand

@MohitC W rzeczywistości moja konfiguracja jest bardziej skomplikowana, ponieważ używam również wtyczki, aby używać „bardzo magii” tak konsekwentnie, jak to możliwe we wszystkich kontekstach. Zobacz moją odpowiedź tutaj .
Kyle Strand

7

Nie musisz uciekać przed spacjami. Więc to:

:%s/\[ERROR\]\ Login\ unsucessful/something/g

powinno faktycznie być:

:%s/\[ERROR\] Login unsucessful/something/g

I oczywiście możesz włączyć bardzo nomagiczny „tryb”, aby te znaki specjalne były mniej wyjątkowe:

:%s/\V[ERROR] Login unsucessful/something/g

Zobaczyć :help /magic.


2

Oprócz flag nomagicznych wspomnianych w innych odpowiedziach.

Często zdarza się, że nie musisz precyzować swojego ciągu wyszukiwania

Na przykład, aby dopasować

[ERROR] Login unsucessful

Możesz użyć tego wyrażenia

.ERROR. Login unsucessful

Oczywiście musisz wiedzieć, że twoje dane nie będą zawierać innych ciągów, różniących się od zamierzonego celu, ale pasujących do wyrażenia.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.