Die Antwort auf Ihre Titelfrage ist das, was Sie beobachtet haben. Aus dem vim Benutzerhandbuch:help 21.3
Wenn Sie Vim mehrmals ausführen, werden die Informationen des zuletzt ausgeführten Programms gespeichert. Dies kann dazu führen, dass Informationen, die zuvor gespeicherte Vims verlassen, verloren gehen. Jeder Eintrag kann nur einmal gespeichert werden.
Der Dateiname der viminfo-Datei (in der der Befehlsverlauf gespeichert ist, unter anderem globale Marken und Registerinhalte, falls konfiguriert) kann jedoch geändert werden! Dies bedeutet, dass Sie für verschiedene Projekte oder Instanzen von vim unterschiedliche "Historien" einrichten können. Vorausgesetzt, Sie führen nicht mehr als eine vim-Instanz pro Projekt aus, ist die Verwaltung des viminfo-Dateinamens über vimrc (oder ein anderes Projekteinstellungs-Plugin) eine gute Möglichkeit, dies zu handhaben.
Richten Sie alternative Viminfo-Dateien ein
Für die Verwaltung auf Projektebene möchten wir vim so konfigurieren, dass Ihr viminfo in einer anderen Datei gespeichert wird. Dies kann in einem laufenden vim vor dem Beenden erfolgen, oder von Ihrem vimrc, z. B. haben Sie möglicherweise Zeilen in Ihrem vimrc, die ein bestimmtes Verzeichnis als zu einem Projekt gehörend erkennen.
:set viminfo+=nPath/to/custom/viminfofile
Ein Beispiel dafür, wie vimrc dies basierend auf dem Verzeichnis automatisch einstellt:
if getcwd() == "/projects/projA"
set viminfo+=n~/.viminfo-projA
endif
Dies hat zur Folge, dass der projektspezifische Verlauf beim Start geladen und beim Beenden gespeichert wird, wenn vim im Verzeichnis / projects / projA gestartet wird.
Laden Sie während des Startvorgangs ein alternatives Viminfo
Dies ist gut für den Fall, dass Sie Ihren Verlauf auf der Seite speichern und später laden möchten, ohne ihn auf Projektebene zu verwalten.
Um den Verlauf zu speichern, müssen Sie zunächst wie oben beschrieben die Option viminfo hinzufügen, bevor Sie das Programm beenden. Starten Sie anschließend vim mit der Option -i, um den Verlauf zu laden
vim -i Path/to/custom/viminfofile
Wenn Sie vim nicht beenden möchten, um die viminfo-Datei zu speichern, können Sie :wv
( :wviminfo
) verwenden. Dadurch wird die viminfo-Datei gespeichert, ohne vim gemäß der obigen n-Einstellung zu beenden. Sie können auch :wv SomeOtherFile
an einem Ort speichern, der nicht mit der Einstellung in der Option viminfo übereinstimmt. Dies ist möglicherweise praktischer als das Einrichten des beim Beenden zu verwendenden Dateinamens, hindert vim jedoch nicht daran, die Standarddatei nach dem Beenden zu verwenden.
Zum Beispiel in first vim:
:wv ~/customInfo
und im zweiten Terminal:
vim -i ~/customInfo
Oder wenn bereits ein zweites vim ausgeführt wird und Sie das viminfo laden möchten:
:rv ~/customInfo
Beachten Sie, dass :wv
und :rv
nicht den Namen der Datei vim beim Verlassen sparen noch den Namen der während der Inbetriebnahme lesen Datei ändern.
Zusätzliche Information
Beschreibung von set viminfo+=nSomePath
: Wir verwenden den Befehl set, um die benannte Option anzupassen viminfo
. Das +=
zeigt an, dass wir an die Option anhängen möchten, nicht alles ändern. Wir hängen die n
Option an, die den Dateinamen für viminfo angibt. Unmittelbar danach haben n
wir SomePath
den Dateinamen, der zum Speichern von viminfo verwendet wird.
Die Dokumentation für wv
( :help wv
) gibt an, dass dieser Befehl zuerst die viminfo-Datei liest und dann alte und neue Informationen zusammenführt. Bisher habe ich keine Informationen darüber, wie das Zusammenführen in diesem Fall funktioniert, aber ich vermute, dass es Markierungen für unbekannte Dateien und Register enthält, die in der aktuellen Sitzung nicht festgelegt wurden.