Odpowiedź na twoje tytułowe pytanie jest tym, co zaobserwowałeś. Z podręcznika użytkownika vim:help 21.3
Kiedy uruchomisz Vima wiele razy, ostatnie wychodzące zapisze jego informacje. Może to spowodować utratę informacji, które wcześniej opuszczały przechowywane Vims. Każdy element można zapamiętać tylko raz.
Jednak nazwa pliku viminfo (w którym przechowywana jest historia poleceń, między innymi globalne znaki i zawartość rejestru, jeśli tak skonfigurowano) jest zmienna! Oznacza to, że możesz skonfigurować różne „historie” dla różnych projektów lub instancji vima. Zakładając, że nie uruchamiasz więcej niż jednej instancji vim na projekt, zarządzanie nazwą pliku viminfo za pomocą vimrc (lub innej wtyczki ustawień projektu) jest świetnym sposobem na poradzenie sobie z tym.
Skonfiguruj alternatywne pliki viminfo
W przypadku zarządzania na poziomie projektu chcemy skonfigurować vim, aby zapisać twoje viminfo w innym pliku. Można to zrobić w uruchomionym vimie przed zamknięciem lub przez vimrc, na przykład możesz mieć linie w vimrc, które wykrywają określony katalog jako należący do projektu.
:set viminfo+=nPath/to/custom/viminfofile
Przykład automatycznego ustawiania vimrc na podstawie katalogu:
if getcwd() == "/projects/projA"
set viminfo+=n~/.viminfo-projA
endif
Wynikiem powyższego jest to, że historia specyficzna dla projektu zostanie załadowana przy uruchomieniu i zapisana przy wyjściu, jeśli vim zostanie uruchomiony w katalogu / projects / projA.
Załaduj alternatywne viminfo podczas uruchamiania
Jest to dobre w przypadku, gdy chcesz zapisać swoją historię z boku i załadować ją później, bez zarządzania nią na poziomie projektu.
Po pierwsze, aby zapisać historię, przed wyjściem dodajesz opcję viminfo jak wyżej. Następnie, aby załadować historię, uruchom vim z opcją -i
vim -i Path/to/custom/viminfofile
Jeśli nie chcesz wyjść z vima, aby zapisać plik viminfo, możesz użyć :wv
( :wviminfo
). Spowoduje to zapisanie pliku viminfo bez wychodzenia z vima zgodnie z powyższym ustawieniem n. Możesz także zrobić :wv SomeOtherFile
zapis w lokalizacji, która nie jest taka sama jak ustawienie w opcji viminfo. Może to być wygodniejsze niż ustawienie nazwy pliku do użycia przy wyjściu, ale nie powstrzymuje vima przed użyciem domyślnego pliku po zakończeniu.
Na przykład w pierwszym vimie:
:wv ~/customInfo
a na drugim terminalu:
vim -i ~/customInfo
Lub, jeśli drugi vim już działa i chcesz załadować viminfo:
:rv ~/customInfo
Zauważ, że :wv
i :rv
nie zmieniaj nazwy pliku, który vim zapisze przy wyjściu, ani nazwy pliku odczytanej podczas uruchamiania.
Dodatkowe informacje
Opis set viminfo+=nSomePath
: Używamy polecenia set do dostosowania nazwanej opcji viminfo
. +=
Wskazuje chcemy dołączyć do opcji, nie zmieniają wszystko. Dołączamy n
opcję określającą nazwę pliku dla viminfo. Zaraz potem n
mamy SomePath
nazwę pliku używanego do zapisywania viminfo.
Dokumentacja dla wv
( :help wv
) wskazuje, że to polecenie najpierw przeczyta plik viminfo, a następnie połączy stare i nowe informacje. Do tej pory nie mam informacji o tym, jak działa scalanie w tym przypadku, ale sądzę, że zachowuje znaki dla nieznanych plików i rejestrów, które nie są ustawione w bieżącej sesji.