Ich versuche, $data['user']
für $data['sessionUser']
zu suchen und zu ersetzen.
Unabhängig davon, welche Suchzeichenfolge ich verwende, bekomme ich immer ein "Muster nicht gefunden" als Ergebnis davon.
Also, was wäre die richtige Suchzeichenfolge? Muss ich einem dieser Charaktere entkommen?
:%s/$data['user']/$data['sessionUser']/g
Suchen und Ersetzen in vim ist fast identisch mit sed
. Verwenden Sie daher die gleichen Escape-Zeichen wie bei der Suche :
Beachten Sie, dass Sie nur Sonderzeichen im Suchteil (der Teil zwischen dem ersten Satz von //
s) entgehen müssen. Das einzige Zeichen, das Sie im Ersetzungsteil zurückgeben müssen, ist das Escape-Zeichen \
self (das Sie hier nicht verwenden).
Es ist nichts falsch mit den gegebenen Antworten, aber Sie können dies tun:
%Vor% \zs
und \ze
können verwendet werden, um den Teil der Übereinstimmung zu begrenzen, der von der Ersetzung betroffen ist.
Sie müssen dem $
nicht entkommen, da es am Anfang des Musters steht und hier kein EOL gefunden werden kann. Und du musst dem ]
nicht entkommen, da es kein übereinstimmendes Start [
hat. Es ist jedoch kein Schaden, diesen Charakteren zu entkommen, wenn Sie sich nicht an alle Regeln erinnern können. Siehe: help pattern.txt für die vollständigen Details, aber nicht versuchen, alles auf einmal zu verdauen!
Wenn Sie Lust haben, können Sie:
%Vor% &
bezieht sich auf den gesamten übereinstimmenden Text (abgegrenzt durch \zs
und \ze
falls vorhanden), so dass er in diesem Fall "user" wird. Das \u
, wenn es in einer Ersetzungszeichenfolge verwendet wird, macht das nächste Zeichen Großbuchstabe. Ich hoffe, das hilft.
Das [
char hat in regex eine Bedeutung. Es steht für Zeichenbereiche . Das $
char hat auch eine Bedeutung. Es steht für den Endanker . Du musst also vielen Dingen entkommen. Ich schlage vor, Sie versuchen ein kleines Plugin wie dies oder das eins und benutze eine visuelle Suche.