2009-07-08 33 views
35

Nie mam pojęcia dlaczego, ale wydaje mi się, że bez względu na to, jak wyjdę z Vima, zawsze pozostawia pliki wymiany. Tak więc, gdy ponownie otworzę ten plik, pojawia się irytujący błąd dotyczący istniejącego pliku wymiany. Za każdym razem muszę wybrać "usuń". Naprawdę chciałbym, żeby to się skończyło. Czy jest coś, co mogę umieścić w moim .vimrc, aby to powiedzieć, "po prostu usuń plik wymiany, jeśli istnieje i zostaw mnie w spokoju?"Vim: Zatrzymaj ostrzeżenia "istniejącego pliku wymiany"

+12

Jak wyjść z VIM? Nie powinien zostawiać plików wymiany, więc zamiast maskować problem, lepiej go naprawić. –

+1

Czy używasz systemu Unix OS i wciskasz Ctrl-Z? Jeśli tak, robisz to źle. Podaj, co masz na myśli, mówiąc "Wyjdź z Vima". –

+0

Być może przypadkowo zniszczyłeś vim na tym pliku będąc rootem, a teraz vim nie może go usunąć? Może to tylko do odczytu? –

Odpowiedz

10

Patrz instrukcja ręczna VIM recovery. Nie powinno być widząc te pliki normalnie, chyba

  1. Twój VIM instancji upaść
  2. jesteś przypadkowo uruchomiony dwa instancje VIM przeciwko tym samym pliku

ja dość często wykonaj drugi, uruchamiając 2 VIM przeciwko ten sam plik, w dwóch terminalach, nie zdając sobie z tego sprawy. Komunikat "plik wymiany" jest wskaźnikiem, że robię to.

Być może masz uruchomioną sesję VIM (w tle?), O której zapomniałeś?

+1

Czy plik wymiany nie jest inny dla pliku wymiany? Zostawiasz plik wymiany, jeśli vim rozbił się przed właściwym zamknięciem bufora. – nik

+0

Więc właśnie uruchomiłem "vi Test.java", a następnie tło. Następnie uruchamiam kolejną wersję "vi Test.java". I otrzymuję "Plik wymiany. Test.java.swp już istnieje", co ma sens, myślę, że –

+0

Plik wymiany jest tworzony podczas otwierania dokumentu w vim i usuwany po prawidłowym zamknięciu dokumentu. –

11

Command-Q na Mac OS zamyka okno Terminal i powoduje awarię każdej aplikacji uruchomionej w oknie.

Aby wyjść z VIM, należy użyć zwykłych komend VIM, takich jak :q.

+0

Tak proste, jak to możliwe, ale nie prostsze. – Tom

+2

Oryginalny plakat wspomniał, że używa MacVim, który jest aplikacją GUI; Terminal nie jest zaangażowany. –

5

Zestaw noswapfile

+0

Plik swap jest dobry w razie awarii –

0

Umieść to w swoim pliku vimrc.

if has("win32") || has("win64") 
    set directory=$TMP 
else 
    set directory=/tmp 
end 
32

W .vimrc dodają:

set shortmess+=A 

Od docs :help shortmess:

A don't give the "ATTENTION" message when an existing swap file is found.

+1

Dokładnie to, czego szukałem. Dzięki. – htmldrum

1

Jest możliwe, że nie masz wystarczających uprawnień do jakiegoś katalogu w ścieżce do bieżącego katalogu . Po prostu mi się to przydarzyło.

2

Gdy plik zostanie otwarty za pomocą edytora vim, wówczas odpowiedni plik wymiany zostanie utworzony z rozszerzeniem .swp. Podczas edycji pliku, jeśli system zawiesza się, utworzony plik wymiany nie zostanie usunięty. Z tego powodu po otwarciu tego samego pliku komunikat jest wyświetlany, ponieważ ".filename.c.swp" już istnieje. Aby tego uniknąć, musimy usunąć wszystkie pliki wymiany przed rozpoczęciem pracy.

rm filename.c.swp 

nazwa pliku. rozbudowa. swp

+0

Zapomniałeś. przed nazwą pliku –

8

Istnieje wtyczka, która automatycznie "potrafi zrobić to, co trzeba" dla plików wymiany Vima: vim-autoswap.

Od głównej:

Radzenie sobie z plikami typu swap jest denerwujące. W większości przypadków masz do czynienia z plikiem wymiany, ponieważ albo masz ten sam plik otwarty w innym oknie, albo jest to plik wymiany pozostawiony tam przez poprzednią awarię.

Wtyczka ta robi dla Ciebie, co byś zrobił w tych przypadkach:

  • Czy plik już otwarty w innej sesji Vima w jakimś innym oknem?
  • Jeśli tak, przejdź do okna, w którym edytujemy ten plik.
  • W przeciwnym razie, jeśli plik wymiany jest starszy niż sam plik, po prostu się go pozbyć.
  • W przeciwnym razie otwórz plik tylko do odczytu, abyśmy mogli go obejrzeć i zapisać.
Powiązane problemy