Vim przechowuje historię poleceń ex (dostępnych za pośrednictwem :↑i q:), a historia ta utrzymuje się po zamknięciu.
Jeśli uruchamiam wiele instancji Vima (ten sam użytkownik, ten sam katalog domowy), w jaki sposób Vim rozróżnia historie poleceń? Wygląda na to, że ostatni proces wyjścia wygrywa. Czy istnieje sposób na zachowanie historii poleceń wszystkich instancji?
command-line
command-history
persistent-state
200_sukces
źródło
źródło
~/.viminfo
własność jest twoja. Częstym błędem jest uruchamianie się przez ludzi,sudo vim ...
którzy, jeśli wcześniej nie uruchomiłeś vima jako własnego użytkownika, utworzą go~/.viminfo
jako root. Jeśli to jest problem, sugeruję nauczenie się używaniasudoedit
lubsudo -e
edycji plików uprzywilejowanych.chown
naprawienie mojego .viminfo z powrotem do mnie (Nie jestem pewien, jak zmieniła się jego własność na root, ponieważ zawsze go używałemsudoedit
, ale no cóż.)Odpowiedzi:
Odpowiedź na twoje tytułowe pytanie jest tym, co zaobserwowałeś. Z podręcznika użytkownika vim
:help 21.3
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.
Przykład automatycznego ustawiania vimrc na podstawie katalogu:
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
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:
a na drugim terminalu:
Lub, jeśli drugi vim już działa i chcesz załadować viminfo:
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 opcjiviminfo
.+=
Wskazuje chcemy dołączyć do opcji, nie zmieniają wszystko. Dołączamyn
opcję określającą nazwę pliku dla viminfo. Zaraz potemn
mamySomePath
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.źródło