Was bewirkt, dass die Substitution in Vim nur einem Element pro Zeile entspricht?

7

Ich habe in letzter Zeit viele Änderungen an meinem .vimrc vorgenommen und irgendwo entlang der Linie habe ich ein unerwünschtes Feature eingeführt. Wenn ein Substitutionsbefehl ausgeführt wird, bei dem das Suchtoken mehr als einmal pro Zeile erscheint, wird nur das erste Token geändert (obwohl die verbleibenden Token als Ergebnis der Substitution hervorgehoben sind). Ich habe hier einige Beiträge darüber gesehen, wie Sie dieses Verhalten von Fall zu Fall aktivieren können, aber ich muss noch etwas darüber herausfinden, was dazu führen könnte, dass dies das Standardverhalten ist oder wie es deaktiviert wird. Wenn jemand Ideen hat, würden sie geschätzt werden.

Als Referenz mein .vimrc ( Ссылка ):

%Vor%

Und die folgenden Plugins bilden den Inhalt meines bundle -Verzeichnisses ( Ссылка ):

%Vor%

Schließlich habe ich alle Plugins deaktiviert, aber das Problem wurde nicht gelöst. Ich habe meine .vimrc entfernt und das Problem wurde behoben (es ist also keine globale Einstellung außerhalb meiner Kontrolle). Ich habe mehrere individuelle Einstellungen in meinem .vimrc deaktiviert, aber ich konnte das Problem nicht beseitigen. Irgendwann wurde ich es leid, Maulwurf zu spielen und beschloss, mich an die Gemeinschaft zu wenden. Irgendwelche Ideen?

EDIT: Als Beispiel

Ich benutze den Befehl :%s/foo/foobar/g

Der Text foo bar foo wird in foobar bar foo

konvertiert

EDIT: Gelöst von pb2q. set gdefault invertiert das Verhalten von /g .

    
chpatton013 04.08.2012, 23:00
quelle

1 Antwort

24

Der Befehl substitute akzeptiert den Schalter g für global, wodurch die Ersetzung für alle Übereinstimmungen in der Zeile bewirkt wird:

%Vor%

Der Standard ist, dass nur das erste Vorkommen der Übereinstimmung ersetzt wird, aber es gibt eine Einstellung, um den Standard auf global umzustellen: gdefault . Also set gdefault in deinem vimrc wenn du das als Standardverhalten willst. Probieren Sie es zuerst in der aktuellen vim-Sitzung mit :set gdefault aus.

Beachten Sie, dass gdefault nicht nur g zum Standardverhalten macht, sondern auch die Verwendung des Flags g , so dass die Verwendung von /g am Ende eines Ersatzes die Ersetzung verursacht nur einmal gemacht werden.

Siehe: :help gdefault .

    
pb2q 04.08.2012, 23:02
quelle

Tags und Links