Gdy proces Vima zostanie nagle zakończony (np. Awaria systemu), pozostawia plik SWP. Otwarcie oryginalnego pliku w Vimie daje później możliwość odzyskania. W większości przypadków odzyskany plik jest taki sam jak zapisany plik, ponieważ często mam w zwyczaju zapisywać. Następnie Vim mówi:
Recovery completed. Buffer contents equals file contents.
You may want to delete the .swp file now.
Oczywiście chcę teraz usunąć plik .swp!
Jak mogę w tym przypadku zmusić Vima do automatycznego usuwania pliku SWP?
Wygląda na to, że nie ma wbudowanego ustawienia, więc szukam odpowiedniego zdarzenia autocommand.
Jednym ze sposobów, który znalazłem, jest :e #
po wiadomości, co powoduje, że opcje zamiany istnieją ponownie, a następnie „Usuń”. Ale tak naprawdę nie powinienem za każdym razem robić tych dodatkowych kroków.
:e #
sztuczka jest, choć nie idealna, ale wciąż bardziej przydatna niż obecna odpowiedź poniżej. :-)Odpowiedzi:
Uwaga: nie powiedziałeś, którego systemu operacyjnego używasz. Poniższe działa z powłoką Unix, ale jeśli używasz systemu Windows, możesz pobrać pozbawioną kości Cygwin lub inną powłokę.
Kiedyś robiłem to samo co ty, uruchom,
:e
aby ponownie otworzyć ten sam plik, aby uzyskać opcję usunięcia pliku odzyskiwania. Po awarii lub nieoczekiwanym ponownym uruchomieniu komputera usuwam wszystkie pozostałe pliki odzyskiwania Vima, uruchamiającvim -r
pliki wymiany i pozwalając na kontynuowanie odzyskiwania.Gdy pliki się nie zmieniły
Jeśli pliki się nie zmieniły, chcę natychmiast usunąć plik odzyskiwania. Byłoby wspaniale, gdyby Vim mógł to zrobić automatycznie, ale niestety tak nie jest.
Kiedy pliki się zmieniły
Jeśli pliki uległy zmianie, uruchamiam
DiffOrig
polecenie, aby porównać różnice między wersją oryginalną a odzyskaną. Jeśli jestem zadowolony ze zmian w pliku odzyskiwania, wychodzę zapisując pliki za pomocą:x
polecenia. Jeśli nie, odrzucam odzyskane zmiany, rezygnując z:q!
. Jeśli plik odzyskiwania nie jest powiązany z zapisanym plikiem, np..swp
Zwykle używam:w filename
do odzyskania bufora do pliku o nazwie pliku.Pomocnik DiffOrig
Dodałem DiffOrig polecenia do mojego
.vimrc
tak, że zawsze jest dostępny.Skrypt powłoki
W mojej powłoce uruchamiam następujący skrypt, aby znaleźć każdy plik wymiany w bieżącym drzewie katalogów. Każdy plik wymiany jest następnie używany do otwierania Vima w „trybie odzyskiwania”, a następnie jest usuwany po zamknięciu Vima.
rm -i
Opcja wymaga potwierdzenia (y
), aby usunąć plik. Jeśli jesteś bardziej pewny siebie i chcesz przyspieszyć proces, możesz to pominąć.źródło