2017-06-10 3 views
6

Häufig, wenn ich einen Fund tue und ersetzen in vi werde ich es tun, wie folgt:Wie gehe ich zum vorherigen zurück, wenn ich die Ersetzung erhalte? Bestätigung in vi?

:%s/find/replace/gc 

Diese haben Sie die Möglichkeit durch Drücken n oder ersetzen zu überspringen, indem y drücken. Aber manchmal überspringe ich versehentlich eine in einer großen Datei, indem ich n drücke, wenn ich y drücken wollte.

Wie gehe ich zurück zum vorherigen und gebe mir eine zweite Änderung?

Im Wesentlichen, wie ich find (search) die andere Richtung vorübergehend? Vielen Dank.

+0

passiert in 'vim' too – Sother

+0

Beachten Sie, dass' Shift + N' NICHT FUNKTIONIERT :) – Sother

+1

Im Ersatzbestätigungsmodus nur die Trigger '(y, n, q, l, a,^E,^Y)' Schlüssel Arbeit. –

Antwort

2

Dies ist keine Antwort auf die Frage, aber eine sehr gute Alternative. Ich habe kürzlich das CtrlSF Plugin entdeckt und es verbessert den Such-/Ersetzungsprozess dramatisch.

Grundsätzlich haben Sie die Suchergebnisse in einem Puffer und Sie können alle Ersetzungen in diesem einzelnen Puffer durchführen.

In Ihrem Szenario zunächst :CtrlSF find zu tun, einen Puffer mit allen Spielen in allen Dateien und dann tun Sie /find und mit n über Ihre Ziele bewegen und sie (natürlich ändern, können Sie eigentlich nur die ersten ändern und dann wiederholen Sie den Austausch mit .). Wenn Sie ein Ziel verfehlen, drücken Sie einfach N, um zum vorherigen Ergebnis zurückzukehren und es zu ersetzen.

2

Ich bin mir nicht sicher, ob Sie den aktuellen Find-Replace-Vorgang unterbrechen und wieder fortsetzen möchten. Aber wenn das akzeptabel ist, hier ist mein Vorschlag:

  1. Starten Sie Ihren Fund ersetzen, wie Sie erwähnten: :%s/find/replace/gc
  2. Nachdem Sie versehentlich eine Substitution überspringen durch n drücken, unterbricht die Suche nach <ctrl-C> drücken
  3. Press <shift-N> um ein wenig anders zurück zum vorherigen Auftreten Ihrer find Begriff
  4. Run finden ersetzen zu gehen, während Sie in diesem Wort sind: :.,$s/find/replace/gc
  5. weiter den Betrieb

diese gesamte Funktionalität mit vim nativen Fähigkeiten funktioniert ohne Addon installieren zu müssen.

Anmerkung: Der .,$ Bereich Spezifizierer zeigt :s (substitute) Betrieb über einen Bereich von Linien durchzuführen, die mit aktuellen Linie (durch . gekennzeichnet) beginnen und bis zum letzten Linie (angedeutet durch $).

Hinweis 2: Es könnte Ihnen bekannt sein, aber wiederholen, für alle anderen, die auf diesen Beitrag stolpert der Suche nach etwas ähnliches - Der % Bereich Spezifizierer zeigt :s (substitute) Betrieb über alle Leitungen der aktuell aktiven Puffer auszuführen.

Verwandte Themen