2008-09-10 6 views
238

Programmieren in vim Ich gehe oft nach etwas suchen, ziehe es, gehe dann zurück zu dem, wo ich war, füge es ein, modifiziere es.In Vim, wie gehe ich zurück, wo ich vor einer Suche war?

Das Problem ist, dass, nachdem ich suchen und finden, ich manuell meinen Weg zurück zu finden, wo ich war.

Gibt es einen automatischen Weg zurück zu dem, wo ich war, als ich meine letzte Suche einleitete?

+0

möglich Duplikat von [Cursor an seine letzte Position bewegen] (http://stackoverflow.com/questions/5052079/move-cursor-to-its-last-position) –

Antwort

354

Ctrl +O mich an die vorherige Stelle nimmt, um es zurückgehen. Ich weiß nichts über den Standort vor der Suche.

Bearbeiten: Auch `. bringt Sie zur letzten Änderung, die Sie vorgenommen haben.

+0

Es scheint auch, dass das Drücken von STRG + O genug Male auch beginnt, Sie durch zuvor geöffnete Dateien zurückzubringen. –

+1

Ctrl + O ist meine bevorzugte Methode auch. Ich benutze es ständig und wünsche anderen Redakteuren, sein Verhalten zu replizieren. – amrox

+39

Ja, CTRL-O und CTRL-I scheinen dich hin und her zu bringen, wo du warst, nett. –

34

Ich habe immer getan, indem ich eine Markierung gesetzt habe.

  1. Im Befehlsmodus drücken m [Brief]. Beispiel: m a setzt eine Markierung bei der aktuellen Zeile unter Verwendung von a als Markenidentifizierer.

  2. Um zurück zur Marke zu gehen, drücken Sie '[Brief]. Zum Beispiel 'ein führt zurück zur Marke Satz in Schritt 1.

Um alle Markierungen zu sehen, die aktuell eingestellte Typ : marks.


Mit einer leicht nicht verwandten Hinweis, ich habe gerade eine andere nette Sache über Marken entdeckt.

Nehmen wir an, Sie springen zur Markierung b, indem Sie 'b tun. Vim setzt automatisch die Markierung ' (das ist ein Anführungszeichen) auf die Zeile, auf der Sie waren, bevor Sie springen, um b zu markieren.

Das heißt, Sie tun können ‚b zu dieser Marke zu springen, dann tun ‚‘ (2 Apostrophe) zurück zu springen Sie vorher waren whever.

Ich entdeckte dies versehentlich mit dem : marks Befehl, der eine Liste aller Marken zeigt.

+5

glücklicherweise ist eine Markierung oft unnötig, da vim das spezielle hält Spur von einigen Positionen und gibt Ihnen Zugriff auf sie mit '',^O, etc. – aehlke

+0

die Marke scheint nur mich an den Anfang der Zeile, auf der es gesetzt wurde.): –

+1

@HermannIngjaldsson Vielleicht hast du das schon herausgefunden, aber während du mit 'wirst du zur markierten Zeile kommen, 'wirst du zum genauen Ort gebracht. – azmr

7

Der einfachste Weg ist es, eine Marke zu setzen, mit m[letter], dann mit '[letter]

+0

Es ist ein Vergnügen, Sie zu sehen, wenn ich nach Vim Tipps suche. Ich benutze ctrl-o mehr zusammen mit ctrl-i, weil es einfacher und automatischer vor und zurück geht. – MattK

84

Verwenden Sie ``, um zu der exakten Position zurückzuspringen, in der Sie sich befanden, bevor Sie gesucht/gesprungen sind, oder '', um zum Anfang der Zeile zurückzuspringen, in der Sie waren, bevor Sie gesucht/gesprungen sind.

+0

Nur funktioniert, wenn du dich im ersten Match befindest, 'n'-an nachfolgende Matches bedeutet, dass du nicht zurückspringst Wo hast du angefangen? – Kris

+0

Was ist, wenn du eine Änderung vorgenommen hast? – Costa

31

Sie sollten wirklich lesen :help jumplist es erklärt alles sehr gut.

+0

Ich mag diese Antwort die beste, es gibt eine Menge an Informationen in: Hilfe, die die meisten Leute nicht wissen (und ich bis erst kürzlich) –

7

Ich benutze diese ein:

nnoremap/ms/ 
nnoremap ? ms? 

Dann, wenn ich etwas suche nach / oder ? verwenden, kann ich wieder schnell von `s. Sie können den Buchstaben s zu jedem Buchstaben ersetzen, den Sie mögen.

+0

Only Vorbehalt hier ist es bricht Suche in einem Fenster wie NerdTree, wo "m" ist definiert als etwas anderes als Marke, im Falle von NerdTree ist es Menü. – Kris

24

CTRL + O und STRG + I, für hin und her zu springen.

Verwandte Themen