Wie kann ich in vim eine Datei mit derselben Zeilennummer öffnen, mit der ich sie zuletzt geschlossen habe?

141

Ich möchte vim so konfigurieren, dass eine Datei an der Stelle geöffnet wird, an der ich aufgehört habe.


quelle
: '"Apostroph gefolgt von doppelten Anführungszeichen leitet Ihre letzte Änderungszeile weiter
Dhiren Hamal

Antworten:

195

In der Ubuntu- /etc/vim/vimrcDatei ist dieses Beispiel auskommentiert:

" Uncomment the following to have Vim jump to the last position when                                                       
" reopening a file
if has("autocmd")
  au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$")
    \| exe "normal! g'\"" | endif
endif

Wenn dies nicht funktioniert, besteht ein häufiges Problem darin, dass Sie nicht Eigentümer Ihrer ~/.viminfoDatei sind. Wenn dies der Fall ist, führen Sie Folgendes aus:

sudo chown user:group ~/.viminfo

Dabei ist der Benutzer Ihr Benutzer usernameund grouphäufig derselbe wie Ihr Benutzername.

Moinudin
quelle
9
Das Autocmd kommt direkt aus dem VIM-Dokument. Siehe: Hilfe Last-Position-Jump
Benutzer55400
19
Wenn das einfache Anführungszeichen in der vorletzten Zeile in einen Backtick geändert wird, springt es zur tatsächlichen Cursorposition, nicht nur zum Anfang dieser Zeile:\| exe "normal! g`\"" | endif
u2622
4
Der chownTeil hat das Problem für mich behoben. Hut ab!
Slowpoison
2
Schließlich weist jemand darauf hin, dass meine .viminfo aus irgendeinem Grund im Besitz von root ist! Dies muss in den anderen 100 Dokumentationen sein, die ich gelesen habe.
Jack
2
Ich möchte nur +1 chown user ~/.viminfohinzufügen. Ich habe jetzt seit einer Stunde versucht, das herauszufinden, und Sie haben gerade meinen Tag gerettet.
Christopher Reid
48

Wenn Ihnen die Handelsautomatisierung der Einfachheit halber nichts ausmacht, drücken Sie beim '"Öffnen einer Datei einfach den Tastendruck (Apostroph, gefolgt von doppelten Anführungszeichen), und Sie springen dorthin, wo Sie waren. Dies ist im Wesentlichen die Antwort von @ marcog.

Sykora
quelle
24
  :h views-sessions

Sie können dies in Ihre .vimrc einfügen :

  au BufWinLeave * mkview
  au BufWinEnter * silent loadview

Die Ansichten werden in $ HOME / .vim / view abgelegt. Sie müssen diese Verzeichnisse wahrscheinlich erstellen.

Oli
quelle
Ich mag diese Antwort, weil die andere auf eine / etc / vim / -Datei verweist, die auf meinem Mac nicht vorhanden war.
MarkHu
15

Sie können vim starten, ohne einen Dateinamen mit anzugeben

vim 

Drücken Sie anschließend zweimal STRG + O, um zum letzten Speicherort in einer Datei zu gelangen, an der Sie gearbeitet haben.

MatAff
quelle
Wenn Sie NERDTree installiert haben, kann durch zweimaliges Drücken von Co NERDTree im aktuellen Puffer geöffnet werden. In meinem Fall muss ich manchmal bis zu fünf Mal auf Co drücken, aber irgendwann erhalte ich den von @MatAff beschriebenen Effekt.
Ashrasmun
Ctrl-cEinmal drücken ist genug für mich. Darüber hinaus drücken Ctrl-cmehr nimmt mich weiter hinten in der histroy Cursorposition (auch relevant ungeöffnet Dateien zu öffnen). Ich benutze Neovim 0.4.2, aber ich verstehe, dass es auch für gilt vim.
T_T
7

Wenn Sie viminfo aktiviert haben, können Sie ganz einfach `0zur zuletzt bearbeiteten Dateiposition wechseln . Sie werden feststellen, dass dies nur ein Befehl zum Markieren ist.

In der Tat können Sie später '3 ausführen, um zum dritten zuvor bearbeiteten Speicherort (möglicherweise in einer anderen Datei) zu wechseln und dann erneut zum letzten Speicherort `0zurückzukehren

Schau es dir an

 :marks

erinnerte Orte zu sehen. Beachten Sie auch, dass viminfo alle Arten anderer Dinge speichert (wie den Inhalt von Registern, Markierungen pro Datei, Befehl und Suchverlauf). Die meisten Menschen haben dies aus offensichtlichen Gründen aktiviert

sehe sehen
quelle
`0 funktioniert bei mir nicht unter vim version 7.4.1689 auf mac. Aber '0 macht den Trick. Ist das ein Tippfehler in der Antwort?
Alamoot
@alamoot nein, ist es nicht, siehe vimdoc motion.txt - Überprüfen Sie, welches Zeichen Ihr `Schlüssel tatsächlich generiert, oder tun Sie:verbose map `
Sie
Du hast recht. Laut vimdoc sind beide richtig!
Alamoot
6

Es gibt ein Plugin namens vim-lastplace (ich bin der Autor), das Ihre Dateien dort öffnet, wo Sie aufgehört haben. Die oben genannten Vorschläge werden verbessert, indem Festschreibungsnachrichten ignoriert werden, da Sie normalerweise eine neue Nachricht bearbeiten und oben in der Festschreibungsnachrichtendatei beginnen möchten.

Greg Dietsche
quelle
Alles, was Sie ohne Plugins tun können, ist am besten. Ziel für .vimrc: Je kleiner der Code,
desto
1

Manchmal ~/.viminfowird es schreibgeschützt oder Ihr Benutzer hat keinen Zugriff auf die Datei. Dies könnte auch ein Grund dafür sein, dass vim Ihre Cursorposition beim Schließen Ihrer Datei nicht speichert.

dam0055
quelle