Czasami Vim ulega awarii i pozostawia plik wymiany. To cudownie. Następnie otwieram plik, który edytowałem i Vim pyta mnie, czy chcę odzyskać. Dziękuję. Po zakończeniu Vim mówi mi:
You may want to delete the .swp file now.
Dlaczego tak. W jaki sposób mogę to zrobić? Uznałem, że po prostu zacznie ponownie używać starego pliku wymiany jako pliku wymiany i wyczyści go, gdy odejdę, ale to nieprawda. Tworzy nowy, czyści go, a kiedy ponownie otwieram plik, ponownie każe mi odzyskać od pierwszego.
Z pewnością coś mi umknęło.
Odpowiedzi:
Nieco prostszy sposób:
Z emulatora terminala:
Następnie wybierz odzyskaj , a jeśli chcesz usunąć swap, który napiszesz (zapisz), a następnie zrób to z poziomu vima:
... i wybierz Usuń tym razem.
Właśnie się o tym dowiedziałem i myślę, że odtąd to zrobię. Wtedy też nie przypadkowo nadpisuję działający plik, jeśli odzyskiwanie okaże się uszkodzone (chociaż nigdy wcześniej tego nie próbowałem).
Istnieją również istotne wskazówki dotyczące tego pytania na temat przepełnienia stosu (gdzie znalazłem tę wskazówkę).
źródło
delete
opcji, są tylko: [O] długopis (E) dit (R) ecover (Q) uit (A) bort, co powinienem zrobić?(D)elete
opcji, zobacz:help swap-exists
; cytujOn Unix this choice is only offered when the process that created the swap file does not appear to be running.
Tj. być może masz uruchomiony inny proces vim, który powoduje ukrycie tej opcji. Może to również wyjaśniać, dlaczego maszswp
plik!Aby wyczyścić WSZYSTKIE pliki wymiany vim w katalogu:
Jeśli jesteś pewien, że nie potrzebujesz żadnych plików wymiany vima w drzewie katalogów i chcesz się ich pozbyć, możesz użyć następującego polecenia w katalogu, gdy vim nie jest uruchomiony (nawet w innym oknie lub nawet innym logowaniu sesja):
Inspiracje i przemyślenia pochodzą z usuwania niepotrzebnych plików .swp w Grupach dyskusyjnych Google. Spowoduje to usunięcie wszystkich plików, których nazwy kończą się
.swk
,.swl
,.swm
,.swn
,.swo
, lub.swp
w bieżącym drzewie katalogów.To może nie być to, czego chcesz, z kilku powodów:
Jak już wspomniano, będzie usunąć wszystkie pliki, których nazwy kończą się
Oryginalny autor tego postu mówi:.swk
,.swl
,.swm
,.swn
,.swo
, lub.swp
, i nie tylko.swp
. Gary Johnson mówi :Z drugiej strony może to być niewystarczające. sugeruje rubel
który pasuje do wszystkich (małych liter) trzyliterowych rozszerzeń od
.saa
do.swp
. Dodaje: „Bądź jednak ostrożny, ponieważ jest to bardziej kompletne rozwiązanie, ale usunie wszystkie pliki graficzne .svg i pliki flash Adobe .swf. Możesz modyfikować regex, jeśli pracujesz z tymi plikami.”Pasuje również.sav
,.snd
(dane dźwiękowe).sql
,.src
,.srt
(SubRip format napisów wideo), i wiele innych wspólnych rozszerzeń.To może być przesada. Jak już wspomniano, będzie usunąć wszystkie pliki, których nazwy kończą się
.swk
,.swl
,.swm
,.swn
,.swo
, lub.swp
. Ale najwyraźniej pliki wymiany vim są zwykle plikami „kropkowymi”. Jeśli edytujeszhello.cpp
, plik wymiany może być.hello.cpp.swp
. Jak pokazano (ale nie wyjaśniono) w odpowiedzi rouble , bezpieczniej jest usuwać tylko pliki, których nazwy zaczynają się od kropki; np. zźródło
Wpisz
ls -a
listę WSZYSTKICH plików w kataloguwpisz
rm .whatever.your.swp
i naciśnijenterTo takie proste.
Każdy plik pokazany z
.
przodu jest plikiem ukrytym i zwykle nie jest widoczny.Pamiętaj, że zmiany są natychmiastowe i trwałe, więc bądź ostrożny.
źródło
file.swp
lubfile.swo
. Potem muszę wrócić do miejsca, w którym byłem. Uderzenie:e
jest znacznie prostszym rozwiązaniem.ls: cannot access +A: No such file or directory
Btw. niektóre wtyczki robią to automatycznie: autoswap.vim
z opisu:
źródło
Nie, AFAIK niczego nie brakuje.
Vim
kontynuuje przechowywanie pliku wymiany jako kopii zapasowej, dopóki go nie usuniesz.Po prostu zapisz, zamknij i ponownie otwórz ten sam plik. Zostaniesz poproszony (ponownie) o
Teraz wystarczy nacisnąć
d
:)źródło
Vim, podobnie jak większość poleceń Uniksa, jest prosty i wyraźny, a nie zakładający i niejawny.
Odzyskujesz za pomocą (r). Jeśli nie podoba ci się odzyskiwanie lub odzyskiwanie jest uszkodzone, możesz je odrzucić. Jeśli Ci się spodoba, możesz zapisać plik. Plik odzyskiwania nie jest dla Ciebie usuwany, ponieważ nie jest jawny i nie będzie poprawny w 100% sytuacji.
Więc ty (r) ecover, (w) rite i (q) uit, następnie edytuj ponownie i wybierz (d) elete lub „rm .myfile.js.swp” i edytuj ponownie. Jest to szybkie i zawsze, z punktu widzenia Vima, zachowanie w 100% prawidłowe.
źródło
Te pliki również były dla mnie denerwujące, ale ustawiłem opcję w .vimrc -
set noswapfile
aby zapobiec tworzeniu go przez vima i zamiast tego utrzymywać pliki w pamięci.źródło
Oto bardziej kompletne wyrażenie regularne do czyszczenia wszystkich plików wymiany vim w oparciu o własny plik gitignore Githuba dla Vima
Bądź jednak ostrożny, ponieważ jest to bardziej kompletne rozwiązanie, usunie wszystkie pliki graficzne .svg i pliki flash Adobe .swf. Możesz zmodyfikować wyrażenie regularne, jeśli pracujesz z tymi plikami.
źródło
Oto fragment do dodania
.vimrc
. Usuwa wszystkie pliki wymiany skojarzone z bieżącym buforem plików i resetuje rozszerzenie wymiany.Po spotkaniu z sytuacją można wykonać.
:DeleteFileSwaps
Jest to świetne, jeśli łączy się z poleceniami:windo
lub:tabdo
.Dalsze szczegóły : Plik może zawierać więcej niż 1 plik wymiany. Powód, ponieważ plik wymiany z rozszerzeniem
.swp
nadal istnieje ivim
będzie z tego powodu tworzyć nowe. Aby dowiedzieć się, czy.swp
istnieją::sw
aby uzyskać bieżący plik wymiany..swp
.Powyższy fragment kodu wykonuje ten sam proces, ale usuwa wszystkie pliki wymiany.
Mam nadzieję że to pomoże.
źródło
Z instrukcji
:h swap
:źródło
.swp
pliku,:sw
polecenie prawdopodobnie poda Ci nazwę.swo
pliku - co nie jest tym, co chcesz usunąć.jeśli zostaniesz o to poproszony, naciśnij, Daby usunąć plik wymiany bieżącego pliku.
jeśli nie, musisz to zrobić ręcznie.
jednym z alternatywnych sposobów jest:
aby zlokalizować / przeszukać plik:
a następnie usuń ten plik:
źródło
Możesz użyć,
Przykład:
źródło
<ext>
jest tutaj zbędny, ponieważ nazwa pliku przynajmniej w systemie Linux zawiera zero lub więcej rozszerzeń.