2009-05-04 10 views
186

C'è un modo per disattivare la creazione di file .swp in vim? o almeno crearli tutti in un unico posto in modo da poterli trovare ed eliminarli facilmente.Disattivazione della creazione di file di scambio in vim

Li trovo particolarmente fastidiosi quando copio la directory principale durante la modifica allo stesso tempo. Naturalmente so che posso usare find -exec per trovarli ed eliminarli. Ma voglio una soluzione più pratica.

+1

http://stackoverflow.com/questions/607435/why-does-vim-save-files-with-a-extension potrebbe aiutare – Ross

+2

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

risposta

217

per disabilitare i file di scambio all'interno di vim, tipo

:set noswapfile 

Per disabilitare file di swap in modo permanente, aggiungere il seguente per il file ~/.vimrc

set noswapfile 

Per ulteriori dettagli, vedere Vim docs on swapfile

+4

I file di scambio sono buoni se il tuo editor si blocca (interruzione di corrente, ecc.), tieni a mente. – koonse

+0

Un'altra opzione è ancora utilizzare il file di scambio, ma lasciarlo in memoria, in modo che non manterrà la scrittura del disco rigido. Questo non può proteggerti dal perdere il file durante un'interruzione, ma se apri lo stesso file in ANVIM, te lo dirà immediatamente. Il comando è: set directory =/dev/shm – webbertiger

+0

[risposta di trusktr] (https://stackoverflow.com/a/15317146/712526) consente di mantenere i vantaggi dei file di scambio mentre si affronta la preoccupazione dell'OP. – jpaugh

3

Se si inserisce set directory="" nel file exrc, si disattiva il file di scambio. Tuttavia, così facendo si disabilita il ripristino.

Ulteriori informazioni here.

27

qui sono le mie personali ~/.vimrc impostazioni di backup

" 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

ho trovato la risposta here:

vim -n <file> 

apre file senza file di swap.

Inoltre:

set dir=/tmp 

in .vimrc crea le swapfiles in /tmp.

+0

E i file di backup '* .ext ~'? C'è qualche opzione della riga di comando per disabilitarli? –

+0

Questo è molto utile per quegli enormi file una tantum! Grazie. –

6

È possibile impostare backupdir e directory su null per disabilitare completamente i file di scambio, ma in genere è consigliabile semplicemente inserirli in una directory centralizzata. Vim si occupa di assicurarsi che non ci siano raccolte di nomi o simili; così, questa è un'alternativa completamente sicuro:

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

È necessario aggiungere una doppia barra '//' alla fine dei percorsi in modo da poter modificare due file con lo stesso nome contemporaneamente. –

12

Sono d'accordo con coloro che mettono in dubbio il motivo per cui vim ha bisogno di tutto questo 'disaster recovery' roba quando nessun altro editor di testo si preoccupano con esso. Non desidero creare QUALSIASI file aggiuntivi nella directory del file modificato quando lo sto modificando, grazie mille. A tal fine, ho questo nel mio _vimrc per disabilitare i file di swap, e spostare irritante 'backup' file nella directory 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

Penso che il fatto che altri redattori non se ne preoccupino si riflette male sugli altri editori più di quanto non rifletta male su vi (m). La scelta di rendere la stessa directory il posto predefinito per mettere questi file è un po 'sfortunata, anche se almeno marginalmente difendibile. (Ad esempio, in un multiserver, ambiente altamente cross-montato, potrebbe non essere ovvio dove trovare un file di recupero nel momento in cui ne hai più bisogno urgentemente) –

+2

La gestione dei file di scambio di Vim è semplicemente orribile. L'ho usato per recuperare i dati persi forse 5 volte. Ma sono stato importunato per recuperare uno swapfile circa 9000 volte, che è invariabilmente identico al file in ogni caso, o peggio una versione obsoleta. Potrebbe essere una buona caratteristica se il processo di recupero non ha succhiato così terribilmente. recover.vim aiuta un po ', ma è ancora troppo interattivo. – joeytwiddle

+3

Il testo di Sublime ha 'disaster recovery '. Lo adoro! Non ho nemmeno bisogno di salvare un file, quando riprendo tutte le modifiche apportate, salvate o meno, vengono ripristinati. – leetNightshade

136

Impostare le seguenti variabili in .vimrc o/etc/vimrc per rendere vim put di swap, di backup e di annullare i file in una posizione speciale al posto della directory di lavoro del file in fase di modifica:

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

Utilizzando doppia finale barre nel percorso dice a Vim di abilitare una caratteristica in cui evita conflitti di nomi. Ad esempio, se si modifica un file in una posizione e in un altro file in un'altra posizione e entrambi i file hanno lo stesso nome, non si desidera che si verifichi un conflitto di nomi in ~/.vim/swap /. Se si specifica ~/.vim/swap // con due barre finali vim creerà i file di scambio utilizzando l'intero percorso dei file modificati per evitare collisioni (le barre nel percorso del file verranno sostituite dal simbolo percentuale%).

Ad esempio, se si modifica /path/one/foobar.txt e /path/two/foobar.txt, verranno visualizzati due file di scambio in ~/.vim/swap/denominati% percorso% one % foobar.txt e% path% two% foobar.txt, rispettivamente.

+0

Si potrebbe anche aggiungere che un po 'di tempo i file di backup salvati potrebbero salvare una skin di sviluppo –

+0

Commento: (non critiche), Ciò sembra buono principalmente per lo sviluppo perché per la lettura di file e piccole modifiche o l'annotazione delle note non importanti che è una gran parte dell'uso di vim per un sacco di gente, sembra un lavoro extra da bokeeping meglio lasciato fuori. Personalmente preferisco che tutti i lavori non abbiano swap o altri backup automatici. Se ho davvero bisogno di sviluppare qualcosa, preferirei avere un framework di livello più alto per proteggermi, preferibilmente con il controllo della versione del codice ecc. –

+0

@LelaDax Vero, il più delle volte questi file sono per lo più inutili perché uso git per tutti i miei codice sorgente. In rare occasioni (come in un incidente) sono tornati utili. Ma in realtà, la cronologia degli annullamenti io uso molto. È molto più facile navigare così velocemente che controllare git commit per visualizzare la cronologia precedente.gundo rende facile e facile navigare nell'albero di annullamento. Potrei vivere senza i file di swap e di backup. – trusktr

0

per chiunque cerchi di impostare questo per i progetti Rails, aggiungere

set directory=tmp,/tmp 

nella vostra

~/.vimrc 

Quindi i file .swp saranno nella loro posizione naturale - la directory tmp (per progetto) .

2

creare alcun file di swap vim solo per un particolare file

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

O per tutti i file in una particolare directory, sembra funzionare (solo un breve test): 'autocmd bufenter c:/aaa/Dropbox/TapNote/*: set noswapfile' – scottkosty

2

Se si utilizza git, è possibile aggiungere *.swp-.gitignore.

+0

Penso che sia quello di cui hanno più bisogno gli utenti! Disattivare i file di scambio è una cattiva pratica. – DenisKolodin

Problemi correlati