2009-05-04 14 views
186

Czy istnieje sposób wyłączenia tworzenia plików .swp w vim? lub przynajmniej utworzyć je wszystkie w jednym miejscu, dzięki czemu mogę je łatwo znaleźć i usunąć.Wyłączanie tworzenia plików wymiany w vim

Uważam je szczególnie denerwujące, gdy kopiuję katalog nadrzędny podczas edycji w tym samym czasie. Oczywiście wiem, że mogę użyć find -exec, aby je znaleźć i usunąć. Ale chcę bardziej praktyczne rozwiązanie.

+1

http://stackoverflow.com/questions/607435/why-does-vim-save-files-w--extension może pomóc – Ross

+2

http://stackoverflow.com/questions/743150/how-to-prevent -vim-from-creation-and-leave-temporary-files/743209 # 743209 – maxaposteriori

Odpowiedz

217

Aby wyłączyć plików wymiany od wewnątrz vim, typ

:set noswapfile 

Aby wyłączyć plików wymiany na stałe, należy dodać do pliku poniżej ~/.vimrc

set noswapfile 

Aby uzyskać więcej informacji, patrz Vim docs on swapfile

+4

Pliki wymiany są dobre, jeśli twój edytor się zawiesza (brak zasilania itp.), po prostu miej na uwadze. – koonse

+0

Inną opcją jest nadal używany plik wymiany, ale pozostaw go w pamięci, aby nie zapisywać dysku twardego. Nie może to uchronić cię przed utratą pliku podczas przestoju, ale jeśli otworzysz ten sam plik w innym vimie, natychmiast to powiadomisz. Poleceniem jest: set directory =/dev/shm – webbertiger

+0

[Odpowiedź trusktr] (https://stackoverflow.com/a/15317146/712526) pozwala zachować zalety plików wymiany podczas rozwiązywania problemu PO. – jpaugh

3

Jeśli umieścisz set directory="" w pliku exrc, wyłączysz plik wymiany. Jednak spowoduje to wyłączenie odzyskiwania.

Więcej informacji here.

27

tutaj są moje osobiste ~/.vimrc ustawienia kopii zapasowych

" backup to ~/.tmp 
set backup 
set backupdir=~/.vim-tmp,~/.tmp,~/tmp,/var/tmp,/tmp 
set backupskip=/tmp/*,/private/tmp/* 
set directory=~/.vim-tmp,~/.tmp,~/tmp,/var/tmp,/tmp 
set writebackup 
36

Znalazłem odpowiedź here:

vim -n <file> 

otwiera plik bez pliku wymiany.

Ponadto:

set dir=/tmp 

w .vimrc tworzy swapfiles w /tmp.

+0

Co z plikami kopii zapasowych '* .ext ~'? Czy istnieje opcja linii poleceń, aby je również wyłączyć? –

+0

Jest to bardzo przydatne dla tych jednorazowych dużych plików! Dzięki. –

6

Można ustawić polecenie backupdir i katalog na wartość null, aby całkowicie wyłączyć pliki wymiany, ale zazwyczaj zaleca się po prostu umieścić je w scentralizowanym katalogu. Vim dba o to, aby nie było żadnych kolizji nazw ani niczego w tym rodzaju; tak, to jest całkowicie bezpieczna alternatywa:

set backupdir=~/.vim/backup/ 
set directory=~/.vim/backup/ 
+2

Powinieneś dodać podwójny ukośnik '//' na końcu ścieżek, aby móc modyfikować dwa pliki o tej samej nazwie w tym samym czasie. –

12

Zgadzam się z tymi, którzy kwestionują dlaczego vim potrzebuje cały ten „Disaster Recovery” rzeczy, gdy nie ma innych edytorów nim przejmować. Nie chcę, żeby vim tworzył DODATKOWE dodatkowe pliki w katalogu edytowanego pliku, kiedy go edytuję, dziękuję bardzo. W tym celu, mam to w moim _vimrc wyłączyć pliki wymiany i przenieść irytujące 'backup' pliki do katalogu temp:

" Uncomment below to prevent 'tilde backup files' (eg. myfile.txt~) from being created 
"set nobackup 

" Uncomment below to cause 'tilde backup files' to be created in a different dir so as not to clutter up the current file's directory (probably a better idea than disabling them altogether) 
set backupdir=C:\Windows\Temp 

" Uncomment below to disable 'swap files' (eg. .myfile.txt.swp) from being created 
set noswapfile 
+7

Myślę, że fakt, że inni redaktorzy nie zadają sobie z tym trudu, słabiej odzwierciedla innych redaktorów niż źle odzwierciedla po vi (m). Wybór, aby katalog ten był domyślnym domyślnym miejscem na umieszczenie tych plików, jest trochę niefortunny, choć przynajmniej nieznacznie możliwy do obrony. (Na przykład w środowisku wieloserwerowym, w środowisku wieloplatformowym, może nie być oczywiste, gdzie znaleźć plik odzyskiwania w momencie, gdy jest to najbardziej potrzebne). –

+2

Obsługa plików swap Vima jest po prostu okropna. Użyłem go do odzyskania utraconych danych może 5 razy. Ale byłem trudny do odzyskania pliku wymiany około 9000 razy, co jest niezmiennie identyczne z plikiem, a co gorsza, nieaktualna wersja. Może to być dobra funkcja, jeśli proces odzyskiwania nie ssał tak strasznie. recover.vim pomaga trochę, ale nadal jest zbyt interaktywny. – joeytwiddle

+3

Sublime Text ma "odzyskiwanie po awarii". Kocham to! Nie muszę nawet zapisywać pliku, kiedy wznawiam wszelkie zmiany, które zrobiłem, zapisane lub nie, zostaną wycofane. – leetNightshade

136

ustawić następujące zmienne w .vimrc lub/etc/vimrc aby vim put swapowych, tworzenia kopii zapasowych i cofnąć pliki w specjalnym miejscu zamiast katalogu roboczym edytowanego pliku:

set backupdir=~/.vim/backup// 
set directory=~/.vim/swap// 
set undodir=~/.vim/undo// 

Korzystanie ukośniki w ścieżce mówi vim, aby włączyć funkcję gdzie unika kolizji nazw podwójne końcowego znaku. Na przykład, jeśli edytujesz plik w jednej lokalizacji i inny plik w innej lokalizacji, a oba pliki mają taką samą nazwę, nie chcesz, aby kolizja nazwy wystąpiła w ~/.vim/swap /. Jeśli podasz ~/.vim/swap // z dwoma końcowymi ukośnikami, vim utworzy pliki wymiany używając całej ścieżki edytowanych plików, aby uniknąć kolizji (ukośniki w ścieżce pliku zostaną zastąpione przez procent symbolu%).

Na przykład po edycji /path/one/foobar.txt i /path/two/foobar.txt pojawią się dwa pliki wymiany w ~/.vim/swap/o nazwie% ścieżka% jeden % foobar.txt i% path% two% foobar.txt, odpowiednio.

+0

Można również dodać, że jakiś czas zapisane pliki kopii zapasowej mogą zapisać skórki dewelopera –

+0

Komentarz: (nie krytyka), Wydaje się to dobre głównie dla rozwoju, ponieważ do czytania plików i małych zmian lub nieważne przechowywanie notatek, który jest dużą częścią vim wykorzystania dla wielu osób wygląda na to, że lepiej byłoby pominąć dodatkową pracę księgową. Osobiście wolę, aby wszystkie prace nie zawierały żadnych zamian ani innych automatycznych kopii zapasowych. Jeśli naprawdę muszę coś rozwinąć, wolałabym mieć bardziej zaawansowany framework, który by mnie chronił, najlepiej za pomocą kontroli wersji kodu itp. –

+0

@LelaDax Prawda, przez większość czasu te pliki są w większości bezużyteczne, ponieważ używam gita dla wszystkich moich kod źródłowy. W rzadkich okazjach (takich jak wypadek) przydały się jednak. Ale tak naprawdę historia cofania, której używam bardzo często. O wiele łatwiej jest nawigować tak szybko, niż sprawdzenie, czy git commits wyświetla poprzednią historię.gundo ułatwia nawigację po drzewie cofania. Mógłbym jednak żyć bez plików wymiany i kopii zapasowej. – trusktr

0

Dla każdego, kto próbuje ustawić to na projekty Rails, dodać

set directory=tmp,/tmp 

do swojej

~/.vimrc 

Więc .swp pliki będą w swoim naturalnym miejscu - katalog tmp (jeden projekt) .

2

utworzyć plik vim wymiany nie tylko dla konkretnego pliku

autocmd bufenter c:/aaa/Dropbox/TapNote/Todo.txt :set noswapfile 
+1

Jeśli chodzi o wszystkie pliki w określonym katalogu, wydaje się, że działa to następująco (tylko krótkie testy): 'autocmd bufenter c:/aaa/Dropbox/TapNote/*: set noswapfile' – scottkosty

2

Jeśli używasz git można dodać *.swp do .gitignore.

+0

Myślę, że tego właśnie potrzebuje większość użytkowników! Wyłączanie plików wymiany jest złą praktyką. – DenisKolodin

Powiązane problemy