Ostatni news na vim.org mówi o używaniu „undofile” do zapisywania historii i cofania zmian nawet po ponownym uruchomieniu:
Jak dowiedziałem się w zeszły weekend, funkcja, która sprawia mi przyjemność, nie jest znana wielu użytkownikom. Oprócz cofania z dowolną liczbą poziomów, Vim oferuje również przechowywanie informacji o cofnięciu w pliku. Możesz więc wyjść z Vima, ponownie uruchomić komputer i nadal cofać wprowadzone zmiany. Zobacz pomoc dotyczącą „undofile”. (Bram Moolenaar)
Jak mogę włączyć i korzystać z tej funkcji?
persistent-state
undo-redo
Cofnij
źródło
źródło
Odpowiedzi:
Najprostsza wersja to: utwórz
~/.vim/undo-dir/
katalog i dodaj następujące elementy do.vimrc
:Jednak nie jest bezbłędny i lepiej czytać dalej. Z mojego własnego
.vimrc
:Wolę nie zaśmiecać losowych katalogów plikami cofania. Ustawiłem więc
undodir
opcję, która umieszcza je wszystkie w jednym katalogu cofania. Pozostaje jeden problem - jestem leniwy i nie mam ochoty tworzyć tego katalogu na wszystkich moich komputerach (używam systemu kontroli wersji do synchronizowania moich.vimrc
na wielu komputerach). Na szczęście Vim może łatwo sprawdzić i utworzyć katalogi, jeśli nie istnieją.Zwróć także uwagę na
0700
tryb w katalogu cofania (to pełne uprawnienia dla właściciela, brak uprawnień dla kogokolwiek innego). Które pliki, które edytowałem, kiedy itp. Powinny pozostać prywatne. A ponieważ jest to katalog, do którego tylko ja mogę uzyskać dostęp, nie muszę się martwić, że ktoś w nim umieści dowiązanie symboliczne, własny plik cofania lub cokolwiek, co musiałoby się martwić o użycie systemowego katalogu tymczasowego.Wreszcie, nie będąc tymczasowym katalogiem systemowym, nie podlega zasadom czyszczenia plików tymczasowych systemu. Często jest to dość krótkie - około tygodnia. Ale aby nie rosnąć wiecznie, umieszczam w moim
crontab
:Więc po 90 dniach bez modyfikacji są usuwane. (Szczerze mówiąc, nie są tak duże, możesz łatwo zostawić je na zawsze z tym, jak tani jest dysk. Ale weź pod uwagę swoją prywatność, jeśli kiedykolwiek twoja maszyna zostanie naruszona.)
źródło
mkdir()
funkcja obsługuje tworzenie wielu struktur katalogów z"p"
opcją{path}
parametru. Powyższy skrypt można nieco uprościć. Używaniecall mkdir($HOME."/.vim/undo-dir", "p", 0700)
działa dla mnie przynajmniej w Vim 7.4.160.