Wie gehe ich in vim dorthin zurück, wo ich vor einer Suche war?


258

Programmieren in vim Ich suche oft nach etwas, ziehe es, gehe dann zurück zu meinem Standort, füge es ein, ändere es.

Das Problem ist, dass ich nach dem Suchen und Finden MANUELL meinen Weg zurück zu meinem Standort finden muss.

Gibt es eine automatische Möglichkeit, dorthin zurückzukehren, wo ich war, als ich meine letzte Suche gestartet habe?


Antworten:


393

Ctrl+ Obringt mich zum vorherigen Ort. Ich weiß vor der Suche nichts über den Standort.

Bearbeiten: `.Sie gelangen auch zur letzten Änderung, die Sie vorgenommen haben.


Es scheint auch, dass das häufige Drücken von STRG + O Sie auch durch zuvor geöffnete Dateien zurückführt.
Mark Biek

1
Strg + O ist auch meine bevorzugte Methode. Ich benutze es ständig und wünsche mir, dass andere Redakteure sein Verhalten wiederholen.
ungefähr

45
Ja, STRG-O und STRG-Ich scheine dich hin und her zu bringen, wo du warst, nett.
Edward Tanguay

8
Strg + T bringt Sie nur zurück, wenn Sie mit einem Tag dort angekommen sind. Wenn Sie es ohne Verwendung von Tags durchsucht haben, werden Sie mit Strg + T an den Ort zurückgebracht, an dem Sie sich befanden, bevor Sie nach Ihrem letzten Tag
Nathan Fellman,

1
Ich habe festgestellt , dass , wenn ich per springen :70und dann :100, drücken ctrl+oeinmal auf die ursprüngliche Position zurückgeht, nicht Linie 70. :(
WhyNotHugo

91

Verwenden Sie ``diese Option, um zu der genauen Position zurückzukehren, an der Sie sich befanden, bevor Sie gesucht / gesprungen sind, oder ''um zum Anfang der Zeile zurückzukehren, auf der Sie sich befanden, bevor Sie gesucht / gesprungen sind.


4
Sieht nur aus, wenn Sie sich im ersten Spiel befinden. Wenn Sie nzu nachfolgenden Spielen wechseln, springen Sie nicht dorthin zurück, wo Sie begonnen haben.
Kris

Was ist, wenn Sie gesucht und eine Änderung vorgenommen haben?
Costa

1
Sie können auch g;und verwenden g,, es geht an die Position der vorherigen / nächsten Änderung.
Goetzc

39

Ich habe es immer getan, indem ich eine Marke gesetzt habe.

  1. Drücken Sie im Befehlsmodus m[Buchstabe] . Setzt beispielsweise maeine Markierung in der aktuellen Zeile, wobei a als Markierungskennung verwendet wird.

  2. Um zur Marke zurückzukehren, drücken Sie '[Buchstabe] . Sie gelangen beispielsweise 'azurück zu der in Schritt 1 festgelegten Linienmarkierung. Um zur Spaltenposition der Zeile zurückzukehren, in der Sie die Linie markiert haben, verwenden Sie `a( Back-Tick [Buchstabe] ).

Geben Sie ein, um alle aktuell gesetzten Markierungen anzuzeigen :marks.


In einem etwas anderen Zusammenhang habe ich gerade eine andere raffinierte Sache über Marken entdeckt.

Angenommen, Sie springen markieren b by doing mb. Vim setzt die Markierung '(das ist ein einfaches Anführungszeichen) automatisch auf die Linie, auf der Sie sich befanden, bevor Sie zur Markierung b springen .

Das heißt, Sie können tun, 'bum zu dieser Marke zu springen, und dann ''(2 einfache Anführungszeichen), um dorthin zurückzukehren, wo Sie vorher waren.

Ich habe dies versehentlich mit dem :marksBefehl entdeckt, der eine Liste aller Markierungen anzeigt.


6
Zum Glück ist eine Markierung oft nicht erforderlich, da vim einige Positionen speziell verfolgt und Ihnen mit ``, ^ O usw. Zugriff darauf gewährt
aehlke

Die Marke scheint mich nur zum Anfang der Zeile zu führen, auf der sie gesetzt wurde. ):
Fzs2

1
@HermannIngjaldsson Sie haben dies vielleicht schon herausgefunden, aber wenn Sie "bringt Sie zur markierten Linie", gelangen Sie zum genauen Ort.
Azmr

38

Sie sollten wirklich lesen, :help jumplistes erklärt das alles sehr gut.


Ich mag diese Antwort am besten, es gibt eine Menge Informationen in: Hilfe, von der die meisten Leute nichts wissen (und die ich bis vor kurzem nicht wusste)
Christian Stewart

1
Was für eine großartige Lektüre! Das ist super hilfreich. <Co> und <Ci>, um durch Orte zu radeln, an denen Sie kürzlich waren. Funktioniert standardmäßig
Costa


7

Am einfachsten ist es, mit zu markieren m[letter]und dann mit zurückzukehren'[letter]


Es ist ein Vergnügen, Sie zu sehen, wenn ich nach vim-Tipps suche. Ich habe Strg-O mehr zusammen mit Strg-I verwendet, weil es einfacher und automatischer hin und her geht.
MattK

7

Ich benutze dieses:

nnoremap / ms/
nnoremap ? ms?

Wenn ich dann etwas mit /oder suche ?, kann ich schnell zurückgehen `s. Sie können den Brief sdurch einen beliebigen Buchstaben ersetzen .


Die einzige Einschränkung hierbei ist, dass die Suche in einem Fenster wie NerdTree unterbrochen mwird, in dem etwas anderes als eine Markierung definiert ist. Im Fall von NerdTree handelt es sich um ein Menü.
Kris
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.