2009-03-03 12 views
149

Znalazłem, że podczas używania Vima na Windows Vim zapisuje plik, plik .ext.swp, który został usunięty przy zamykaniu okna Vima i pliku .ext~.Dlaczego Vim zapisuje pliki z rozszerzeniem ~?

Zakładam, że plik .ext.swp jest kopią zapasową sesji w przypadku awarii Vima. Jaki jest jednak cel pliku .ext~? Czy jest to stały plik kopii zapasowej? To denerwujące, ponieważ chciałbym skopiować wszystkie pliki, które pracuję na mojego hosta, bez tych duplikatów. Jak wyłączyć to lub, jeśli jest to uzasadnione, ukryć pliki?

+0

Czy masz plik otwarty jednocześnie w więcej niż jednym miejscu, utworzą '.ext.swp'. – dirkgently

+1

dirkgently: Nie, tutaj mogę otworzyć plik w jedynym oknie vima i utworzy on plik .swp. Nie jestem za bardzo nachalny, ponieważ został usunięty, gdy zapisuję/zamykam okno. – Ross

Odpowiedz

194

plik *.ext~ jest plik kopii zapasowej, zawierający plik, jak to było zanim go edytować.

Plik to plik wymiany, który służy jako plik blokady i zawiera historię cofania/ponawiania, jak również wszelkie inne informacje wewnętrzne, które Vim potrzebuje. W przypadku awarii możesz ponownie otworzyć swój plik, a Vim przywróci poprzedni stan z pliku wymiany (co uważam za pomocne, więc go nie wyłączam).

Aby wyłączyć automatyczne tworzenie kopii zapasowych plików, należy użyć (w vimrc):

set nobackup 
set nowritebackup 

Gdzie nowritebackup zmienia domyślne "Zapisz" zachowań Vima, która jest: bufor

  1. zapisu do nowego pliku
  2. usunąć oryginalny plik
  3. zmienić nazwę nowego pliku

i spowoduje, że Vim zapisze bufor w oryginalnym pliku (co spowoduje ryzyko zniszczenia go w przypadku błędu wejścia/wyjścia). Ale uniemożliwiasz "przeskakiwanie plików" na pulpicie systemu Windows, co jest głównym powodem, dla którego mam na miejscu nowritebackup.

+7

+1 Dla 'ty uniemożliwiasz 'przeskakiwanie plików" na pulpicie systemu Windows ". Googled i znalazł tę odpowiedź –

+0

Właściwie - czy muszę mieć zarówno 'nobackup' i' nowritebackup'? Czy istnieje sposób na zapisanie kopii pliku jako kopii zapasowej, ale czy nie można tego zapisać/usunąć/zmienić nazwy? –

+0

@Merlyn: Jeśli masz 'backup' (w przeciwieństwie do' nobackup'), wówczas Vim utworzy kopię zapasową (plik '* .ext ~'). Jest to całkowicie niezwiązane z 'nowritebackup'. – Tomalak

12
:set nobackup 

wyłączy kopie zapasowe. Możesz również ustawić kopię zapasową, jeśli nadal chcesz te pliki kopii zapasowych, ale w folderze centralnym. W ten sposób twój działający katalog nie jest zaśmiecony plikami ~.

Więcej informacji o kopiach zapasowych pod numerem : kopia zapasowa.

5

Masz rację, że plik .swp jest używany przez vim do blokowania i jako plik odzyskiwania.

Spróbuj umieścić set nobackup w swoim vimrc, jeśli nie chcesz tych plików. Zobacz the Vim docs dla różnych opcji związanych z kopiami zapasowymi, jeśli chcesz pobrać całą szufladę lub chcesz mieć pliki .bak zamiast ...

+0

+1 za podanie celu jako pliku blokady. Nie myślałem o tym. – Tomalak

22

Aby wyłączyć te pliki, po prostu dodaj te linie do .vimrc (plik konfiguracyjny vima w systemie operacyjnym opartym na systemie Unix):

set nobackup  #no backup files 
set nowritebackup #only in case you don't want a backup file while editing 
set noswapfile  #no swap files 
11

Można również ustawić inne rozszerzenie kopii zapasowej i miejsce zapisania kopii zapasowej (preferuję wersję ~/.vimbackups dla systemu Linux).Ja używałem „wersjonowanych” kopii zapasowych, poprzez:

au BufWritePre * let &bex = '-' . strftime("%Y%m%d-%H%M%S") . '.vimbackup' 

Ustawia dynamicznego rozszerzenia kopii zapasowej (ORIGINALFILENAME-YYYYMMDD-HHMMSS.vimbackup).

+3

możesz chcieć dołączyć do konfiguracji katalogu kopii zapasowej, np. Umieszczając' set backupdir = ~/.vimbackups' w swoim ~/.vimrc – rampion

+1

Pomoc vim w pełni opisuje tę technikę. Zobacz ': help backupext' – netjeff

190

Myślę, że lepszym rozwiązaniem jest umieszczenie tych linii w pliku vimrc

set backupdir=~/vimtmp,. 
set directory=~/vimtmp,. 

Trzeba utworzyć katalog w katalogu domowym nazwie vimtmp to zadziałało.

W ten sposób zyskujesz korzyści obu światów, nie musisz oglądać plików, ale jeśli coś się stanie, możesz pobrać plik kopii zapasowej z vimtmp. Nie zapomnij wyczyścić katalogu co jakiś czas.

+19

+1 Tak naprawdę mam ustawiony zestaw do ~/.vim/tmp, ale tak czy inaczej, to uratowało mi tyłek na więcej niż raz. – jonyamo

+0

Bardzo podoba mi się ten pomysł. – Abel

+9

Dlaczego potrzebujesz,. na końcu każdej linii? – shin

3

Jedyną opcją, która pracowała dla mnie było umieścić ten wiersz w moim ~/.vimrc pliku

zestaw noundofile

Inne opcje odnoszące się do tworzenia kopii zapasowych plików nie przeszkodziło tworzenie plików tymczasowych kończącą w ~ (tyldy)

3

umieścić ten wiersz w swoim vimrc:

set nobk nowb noswf noudf " nobackup nowritebackup noswapfile noundofile 

w systemie Windows, który byłby C:\Program Files (x86)\vim\_vimrc plik dla całej konfiguracji vima dla wszystkich użytkowników.

Ustawienie ostatniego noundofile jest ważne w systemie Windows, aby uniemożliwić tworzenie plików tilda *~ po edycji.


Chciałbym, aby Vim miał domyślnie włączoną tę linię. Nikt nie lubi brzydkich katalogów.

Pozwól użytkownikowi wybrać, czy i jak ma włączyć zaawansowane funkcje tworzenia kopii zapasowych/cofania plików.

To najbardziej irytująca część Vima.

Następnym krokiem jest utworzenie set noeb vb t_vb= aby wyłączyć sygnał dźwiękowy: P

0

musiałem dodać set noundofile do ~ _gvimrc

z „~” może być zidentyfikowana katalogu poprzez zmianę katalogu poleceniem

cd ~
Powiązane problemy