Za każdym razem, gdy przerywam sesję w vimie, tracąc połączenie, jestem raczej wypełniony dredem (a jednak nadal używam vim ... jakim masochistą muszę być), ponieważ kiedy ponownie otwieram moje pliki, stos wymiany - pliki czekają, aby spróbować zniszczyć moją pracę. Jakie są najlepsze praktyki dotyczące pracy z plikami wymiany vim? Czy po prostu wybierasz najnowszy? Jeśli plik działa w oczekiwany sposób, czy po prostu usuwasz pliki wymiany? Jak się ich pozbyć?
14
Odpowiedzi:
Nie panikuj!
Odzyskiwanie plików jest zawsze bezpieczne, ponieważ vim nigdy nie zapisuje żadnych zmian, dopóki sam ich nie napiszesz. Odzyskiwanie z pliku wymiany, a następnie zamykanie bez zapisywania niczego nie zmieni.
Uporządkuj swoje pliki wymiany:
Pobierz vim, aby umieścić wszystkie swoje pliki wymiany w tym samym miejscu, abyś zawsze wiedział, gdzie one są:
lub gdziekolwiek wolisz. Użycie
//
na końcu nazwy pliku powoduje, że vim używa bezwzględnych ścieżek do nazw plików wymiany, więc nie dostajesz kolizji nazw. Upewnij się, że katalog istnieje, bo vim go nie użyje (nie utworzy go dla ciebie).Uwaga: Działa to tylko w przypadku zmiennych środowiskowych, jeśli chcesz użyć zmiennej vimscript, musimy użyć
:execute
magii:Zróżnicuj różnice:
Help Vim sugeruje bardzo przydatne polecenia do wykorzystania w tej sytuacji:
:DiffOrig
. To nie jest domyślne polecenie vim , więc skopiuj implementację z:h :DiffOrig
do swojego vimrc. (dotyczy to również wersji$VIMRUNTIME/defaults.vim
vim8). Teraz możesz odzyskać plik i po prostu uruchomić DiffOrig, aby uzyskać vimdiff tego, co zmieniło się od niezmodyfikowanej wersji.Jeśli chcesz porównać zawartość wielu plików wymiany, odzyskaj plik z każdym innym plikiem wymiany, a następnie zapisz wynik w plikach tymczasowych. Teraz załaduj pliki i uruchom
:diffthis
każdy plik, dokonaj żądanych zmian, zapisz z powrotem do oryginalnego pliku oraz usuń pliki tymczasowe i zamień.Przydatne polecenia:
:swapname
: pobierz nazwę, której używa vim dla pliku wymiany dla bieżącego bufora (:h :swapname
):recover
: odzyskuje wybrany plik, tak samo jak po uruchomieniu vima i naciśnięciu R(:h :recover
)Sprawdź pomoc:
Vim ma cały rozdział instrukcji użytkownika na prostą:
:usr_11.txt
pomoc odniesienia Vim jest na plikach wymiany:
:h swap-file
,h recovery
Pomoc w opcji katalogów (do ustawiania wymiany lokalizację pliku):
:h 'directory'
Edycja: Zmodyfikowany przykład ustawienia katalogu, jak wskazano w komentarzach @B Layer
źródło
exec
...set directory^=$HOME/.vim/swap//
działa dobrze, dopóki$HOME
jest zainicjowana zmienna środowiskowa. Zobaczyć:h expand-env
. Działa również zdictionary
,undodir
ibackupdir
żeby wymienić tylko kilka.Osobiście wyłączyłem pliki wymiany i tworzenia kopii zapasowych, ponieważ ma tendencję do tworzenia plików wymiany i tworzenia kopii zapasowych wszędzie i często powoduje konflikty. Trwałe cofanie Vima było znacznie bardziej niezawodne i wolne od błędów.
Vim ma obecnie trwałe cofanie, jest to znacznie bardziej szczegółowa metoda tworzenia kopii zapasowych. Za każdym naciśnięciem przycisku Escprzechwytywany jest bieżący stan pliku.
Możesz użyć
:undolist
lub wtyczek takich jak gundo lub cofnij drzewo, aby przeglądać historię cofania.Aby użyć vima w ten sposób:
W skorupce:
W Vimie
Aby wyłączyć pliki wymiany:
:set noswapfile
źródło
'writebackup'
rozwiązuje jeszcze jeden problem). Włączone trwałe cofanie nie pomoże, jeśli komputer ulegnie awarii. Państwo może argumentować, że pliki wymiany są konieczne z innych powodów (Modern stabilności OS istnienie UPSes), ale jeszcze tego nie uczyniły w tej odpowiedzi. 2. ustawienie'undodir'
nie umożliwia trwałego cofania! Trzeba ustawić'undofile'
na to