Gdzie VIM (gvim / macvim) przechowuje pliki wymiany dla niezapisanych / nienazwanych buforów?


52

Gdzie VIM (gvim / macvim) przechowuje pliki wymiany dla niezapisanych / nienazwanych buforów? (Jeśli tak się dzieje).

Tło: Przez pół intensywne seminarium robiłem notatki w nienazwanym / niezapisanym buforze MacVim, kiedy MacBookowi zabrakło soku i wyłączył się znikąd (nie spał / hibernował jak zwykle).

Pytanie: Czy ktokolwiek wiedziałby, czy istnieje szansa, że ​​niezapisana praca mogła zostać zapisana w pliku wymiany (.swp) lub podobnym, który można odzyskać?

Szczegóły systemu: W szczególności stało się to przy użyciu MacVim na Mac OS X 10.5.8 (ale potencjalne wskazówki dotyczące odzyskiwania dla innych wersji również są interesujące). Nie uruchomiłem jeszcze MacVima, na wypadek, gdyby to zainicjowało proces czyszczenia.


1
Wyjaśnienie: Przez niezapisane mam na myśli, że nigdy nie uratowałem. Plik został utworzony przez naciśnięcie Command-T (myślę, że jest to odpowiednik: tabe), tzn. Nowy nienazwany bufor jest otwierany w nowej karcie. (Zazwyczaj robiłbym ': sav somefilename' na późniejszym etapie.
davur

Nie ma znaczenia Zobacz dodatki do mojej odpowiedzi.
frabjous

Odpowiedzi:


60

Uruchom vima i spróbuj:

:recover <filename>

Jeśli plik nigdy nie miał nazwy, po prostu:

:recover

To twój najlepszy zakład. Aby uzyskać więcej informacji o plikach wymiany i odzyskiwaniu, zobacz:

:help usr_11

Informacje o plikach wymiany zwykle są zapisywane w tym samym katalogu, co edytowany plik, ale w pliku. dodał początek, aby go ukryć i .swp na końcu, ale możliwe jest przeniesienie ich w inne miejsce przez:

:set directory=~/vimswap

lub podobne.

Widzieć:

:help swap

Dla wszystkich szczegółów.

Plik wymiany vim nie jest jednak taki sam jak edytowany bufor, więc przeczytaj tam, co można zrobić w celu odzyskania.


EDYCJA : komentarze odpowiadające na pytanie:

[…] Wygląda na to, że szuka w twoim bieżącym katalogu roboczym ~ / tmp, / var / tmp i / tmp plików wymiany, aw moim przypadku zawsze mam bieżący katalog roboczy i tam właśnie został zapisany. - dsclementsen 5 października 10 o 1:42

sprawdź także wiersz polecenia vim -r arg. Spowoduje to wydrukowanie wszystkich znalezionych plików wymiany i ich położenia. Dodatkowo będzie zawierał wiele dodatkowych informacji, takich jak data / zmodyfikowana / nazwa użytkownika / etc ... - Neg_EV Paź 5 '10 o 13:49


To nie pomoże. Przez niezapisane mam na myśli, że nigdy nie uratowałem. Czyli otworzyłem nowy bufor za pomocą: tabe lub (Command + T). Mówimy więc o niezapisanym / nienazwanym buforze. Czy istnieje domyślna lokalizacja, w której przechowywany jest taki niezapisany plik?
davur

3
Spróbuj :recoverbez nazwy pliku. Właśnie przetestowałem to do odzyskania nienazwanego pliku i zadziałało. W każdym razie, nawet jeśli to konkretne polecenie nie pomaga, czytanie tych plików pomocy może.
frabjous

1
To nie jest tak daleko, jak mogę powiedzieć. Właśnie przetestowałem, zabijając vima zewnętrznie podczas edycji nowego pliku. Ale kiedy uruchomiłem recoverbez argumentów, pozwoliło mi to wybrać nawet z niektórych starszych sesji. W każdym razie plik .swp dla bufora nienazwanego znajduje się prawdopodobnie w / tmp, ale byłby gdzieś indziej, w zależności od tego, czy miałeś set directory= <something>.
frabjous

2
sprawdź także wiersz polecenia vim -r arg. Spowoduje to wydrukowanie wszystkich znalezionych plików wymiany i ich położenia. Dodatkowo będzie zawierał wiele dodatkowych informacji, takich jak data / zmodyfikowana / nazwa użytkownika / etc ...
Neg_EV

1
Musiałem użyć polecenia, :recover!aby odzyskać niezapisany plik.

2

Pracuję na systemie Windows 10 i :recovernie znalazłem pliku wymiany. vim -rwymieniono plik wymiany z ostatniej sesji edycji (również nigdy nie zapisany) o nazwie _.swp. Odzyskiwanie było możliwe dzięki :recover _.


1

Odpowiedź brzmi: wszędzie. Sztuką jest znalezienie właściwego. Niektóre znajdują się w twoim katalogu / tmp, ale wiele z nich znajduje się gdzieś w twoim katalogu domowym.

Być może istnieją bardziej wydajne sposoby, aby to zrobić, ale gdy zgubiłem nienazwany plik (na MacBooku), działały dla mnie:

w katalogu domowym wyszukaj pliki kopii zapasowych (zajmuje to kilka sekund i prawdopodobnie może być mądrzejszy):

find ./ -name ".s*" > findVimBackups.txt

Otwórz plik:

vim findVimBackups.txt

usuń nazwy plików, które nie są przeznaczone do tworzenia kopii zapasowych plików nienazwanych:

:g!/\/\.s..$/d
:g/svn/d

Teraz widzę listę lokalizacji nienazwanych plików kopii zapasowych. W każdym z tych katalogów uruchamiam następujące czynności, aż znajdę plik (i) z dzisiaj:

ls -ltra <directory>

I cd do odpowiedniego katalogu i otwórz vim i wpisz: odzyskaj i wybierz poprawną kopię zapasową.


0

Wygląda na to, że znajdą się w twoim katalogu roboczym. :pwdTo tam, gdzie otworzyłeś vima lub alternatywnie możesz go ustawić za pomocą :cdlub podobnie.

Pliki wymiany dla nienazwanych buforów wydają się po prostu tam wrzucane bez nazwy pliku, więc skończysz na .swp .swn .swo itp. Odkryłem, że nie przy próbie odzyskania czegoś, ale gdy mój plik ignorowania hg nie pokrywa wystarczająco różne przyrostki!

Domyślam się, że przyczyną może być wiele nienazwanych buforów ze zmianami, a usunięcie tych buforów spowodowało zniknięcie tajemniczych plików

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.