Odpowiedzi:
vim -r .swp
To przechodzi w tryb odzyskiwania i daje więcej informacji. Myślę, że tego właśnie chcesz.
.swX
-file są pozostawione, jeśli sesja z niezapisanym plikiem zostanie zabita / ulega awarii / dzieje się coś złego. Są one również obecne w czasie, gdy niezapisany bufor jest otwarty w sesji Vima. vim -r
czyta te pliki tymczasowe i odtwarza zawartość. Po odzyskaniu po prostu zapisz go jak zwykle, np :w newfilename
.
Nie musisz mieć oryginalnego pliku, aby odzyskać .swp. Po prostu otwórz plik, jakby istniał. vim wyszuka plik z rozszerzeniem .swp i zaoferuje jego odzyskanie.
na przykład:
$ ls -a
. .. .test.txt.swp
$ vim test.txt
[...]
Swap file ".test.txt.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (D)elete it, (Q)uit, (A)bort:
Wystarczy nacisnąć R, aby go odzyskać i: wq plik
Edycja: Zauważ, że plik .swp zawiera tylko zmiany dokonane w pliku (patrz komentarz). Oznacza to, że będziesz musiał pobrać najnowszą kopię pliku z kopii zapasowej, a następnie użyć vima, aby odzyskać najnowsze zmiany. Jeśli nie masz kopii zapasowej pliku, naprawdę nie masz szczęścia.
The original file is no longer needed for recovery.
:preserve
i :set cpoptions=...&
pozostawia pliki .swp i .swo w katalogu i oferuje możliwość odzyskania z obu tych plików. Za pomocą vim -r <file>
możesz wybrać pomiędzy .swp i .swo. Dalsze edycje generują .swn, .swm itp., Które wydają się być częściową sumą swapów do tego momentu. Możesz powrócić do wybranej wersji i edytować (~ = widelec) lub zapisać (~ = skrytka). W końcu możesz spakować pliki wymiany, demonizować ich kopie zapasowe itp. Mogę się mylić co do szczegółów, jeśli chodzi o większe pliki - nie jestem pewien, jak to wpływa na dodatkowe pliki wymiany - patrz poniżej.
Otwórz oryginalny plik za pomocą vima i wybierz opcję odzyskiwania.
Po przeczytaniu komentarzy Vegar Westerlund i Heptite chciałem wiedzieć, w którym momencie vim potrzebuje oryginalnego pliku (lub kopii zapasowej) do odzyskania z pliku .swp. Oto, co zrobił:
Otworzyłem plik 975 linii, edytowałem go w linii 949 (tworząc .swp
plik) i zabiłem proces, a następnie usunąłem oryginał. $ vim Original_File
zapytał, czy chcę odzyskać z .swp »> tak; tylko pierwsze 68 linii i ostatnie 34 linie (zaczynając 8 linii powyżej mojej edycji) zostały odzyskane.
Następnie powtórzyłem test z mniejszymi plikami: od 20 do 200 wierszy plik .swp zawierał 100% oryginalnej zawartości. Ale przy 300 liniach tylko pierwsze 68 i 18 ostatnich linii (zaczynając 2 linie powyżej mojej edycji) zostały uwzględnione w .swp.
Podsumowując, dobrze jest wiedzieć, że vim zawsze zapisuje „nagłówek” i „dół” pliku w plikach .swp. Może jest ustawienie kontrolujące, ile wierszy powinien zawierać .swp?