Oft bearbeite ich eine Datei - denke, meine Arbeit ist erledigt - dann schließe ich die Datei und gehe zum nächsten Schritt über. Aber dann wird mir klar, dass ich zu diesem Code zurückkehren und ihn ein bisschen weiter optimieren muss.
Wenn ich die Datei erneut öffne, kann ich die .
Markierung verwenden und zur Position der letzten Bearbeitung mit springen '.
.
Jetzt versuche ich, eine Möglichkeit zu finden, mit den Markierungen von vim zu Speicherorten in Dateien zu springen, die ich kürzlich besucht, aber nicht geändert habe.
Ich weiß, dass ich eine Marke manuell setzen kann, aber die meiste Zeit erwarte ich nicht, dass ich zurückkomme. Daher setze ich keine Marke und muss eine Marke verwenden, die vim automatisch generiert.
Die "
Marke scheint, als könnte dies ein Weg sein, dies zu erreichen :h motion
.
"
Zur Cursorposition beim letzten Verlassen des aktuellen Puffers. Der Standardwert ist das erste Zeichen der ersten Zeile. Siehe | Last-Position-Jump | wie man dies für jede geöffnete Datei verwendet. Pro Puffer wird nur eine Position gespeichert, nicht eine für jedes Fenster. Solange der Puffer in einem Fenster sichtbar ist, wird die Position nicht geändert. {nicht in Vi}.
Aber wenn ich
- Schließen Sie alle Fenster, in denen ein Puffer angezeigt wird (der Puffer ist jedoch noch in der Pufferliste vorhanden). oder:
- Töte alle Instanzen des Puffers
Die Markierung scheint nicht aktualisiert zu werden. Wie kann ich mit einer Markierung zu einer Position der letzten Cursorposition im Puffer / in der Datei springen?
quelle
Ctrl+o
undCtrl+i
...:h jump-motions
für weitere Informationenviminfo
"
Marke, wenn Sie eine Datei öffnen. Ich wollte wirklich nur manuell zur letzten Cursorposition springen. Außerdem konnte ich einfach nicht verstehen, wann die"
Marke gesetzt und aktualisiert wird, sodass die"
Marke für mich unbrauchbar ist.Antworten:
Hier ist eine klassische Lösung: Verwenden
um zur letzten HTML-Datei zu springen und so weiter ...
quelle
WinLeave
da ich bemerkt habe, dassBufLeave
es nicht ausgelöst wird, wenn Sie einen Split schließen und der Puffer noch an einer anderen Stelle geöffnet ist. Ich weiß, dass es ein bisschen ein Randfall ist, aber esWinLeave
scheint über einen größeren Bereich von Situationen vom Typ "Datei schließen" zu funktionieren, aber ichIch habe diese Vimscript-Erklärung geschrieben, die zu funktionieren scheint
Erläuterung
BufLeave
Auto-Befehl: Dies scheint ausgelöst zu werden, wenn Siebd
:normal
- Es scheint, dass dercommand
Teil von autocmd standardmäßig ein Ex-Befehl ist. Um vim anzuweisen, einen Befehl für den normalen Modus auszuführen, müssen Sie hinzufügen:normal
ml
- eine Marke setzenl
(Mnemonik: zuletzt )Verwendung
Um die Cursorposition vom letzten Mal im Puffer abzurufen, drücken Sie einfach
oder
quelle
Wenn Sie möchten , dass Ihr Cursor die letzte Position wiederherstellt, die viminfo bekannt ist , können Sie verwenden
Die Antwort von romainl war für mich besonders nützlich und ich habe sie oft benutzt (seit ich ein Webentwickler bin):
Die letzte potenziell nützliche Sache ist die Option
:help 'nostartofline
:quelle