Alternative, um Schrägstriche bei der Suche zu vermeiden und lange Zeichenfolgen zu ersetzen

10

Gibt es eine Alternative beim Suchen und Ersetzen von Zeichenfolgen durch vim, als jedes Sonderzeichen in Zeichenfolgen zu umgehen?

Zum Beispiel, wenn ich die folgende Zeichenfolge abgleichen und durch etwas ersetzen möchte

[ERROR] Login unsucessful

Dann muss ich tun

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

Und es wird viel hässlicher und schmerzhafter für komplexe Zeichenfolgen, die viele Sonderzeichen enthalten

Ich würde gerne so etwas machen

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

das würde vermeiden, dass alle entkommen. Gibt es eine solche Funktion?

MohitC
quelle

Antworten:

16

Sie können den very-nomagicSchalter verwenden. Siehe :h \Vfür Details. Das würde dir geben %s/\V[ERROR] Login unsuccessful/something/g. Es gibt auch den nomagicSchalter \M, der eine leichtere Version von ist \Vund nicht weit verbreitet zu sein scheint.

Beachten Sie auch, dass Sie keine Leerzeichen wie in Ihrem Beispiel verlassen müssen, auch wenn Sie diese nicht verwenden \V.

PhilippFrank
quelle
Vielen Dank. Genau das, was ich wollte. habe das bei meiner Google-Suche nicht bekommen, weiß nicht warum.
MohitC
2
@MohitC I Karte /zu /\v„sehr Magie“ für die meisten Suchanfragen zu ermöglichen, so dass ich kartiert //auf /eine unmodifizierte Suche (nützlich für das Gehen durch Suchverlauf ignorieren Modifikatoren) zu starten und /v/zu /\Vschnell alle Magie für die Suche auszuschalten.
Kyle Strand
@MohitC Tatsächlich ist mein Setup komplizierter, da ich auch ein Plugin verwende, um "sehr magisch" in allen Kontexten so konsistent wie möglich zu verwenden. Siehe meine Antwort hier .
Kyle Strand
7

Sie müssen keinen Leerzeichen entkommen. Also das:

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

sollte eigentlich sein:

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

Und natürlich können Sie den sehr nomagischen "Modus" aktivieren , um diese Sonderzeichen weniger speziell zu machen:

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

Siehe :help /magic.

romainl
quelle
2

Neben den in anderen Antworten erwähnten nomagischen Flaggen.

Es ist häufig der Fall, dass Sie in Ihrer Suchzeichenfolge nicht präzise sein müssen

Zum Beispiel zu passen

[ERROR] Login unsucessful

Sie könnten den Ausdruck verwenden

.ERROR. Login unsucessful

Natürlich müssen Sie wissen, dass Ihre Daten keine anderen Zeichenfolgen enthalten, die sich von Ihrem beabsichtigten Ziel unterscheiden, aber mit dem Ausdruck übereinstimmen.

RedGrittyBrick
quelle