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ąc vim -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.
command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis | wincmd p | diffthis
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.
find . -type f -name '.*.sw?' -exec vim -r "{}" -c DiffOrig \; -exec rm -iv "{}" \;
rm -i
Opcja wymaga potwierdzenia ( y
), aby usunąć plik. Jeśli jesteś bardziej pewny siebie i chcesz przyspieszyć proces, możesz to pominąć.
:e #
sztuczka jest, choć nie idealna, ale wciąż bardziej przydatna niż obecna odpowiedź poniżej. :-)