Qual è lo scopo dei file di scambio?


74

Quando modifico i file, Vim tende a creare file denominati , che trovo fastidiosi. Da , vedo che l' opzione sopprime la creazione di file di scambio..filename.swpvim -h-n

Esiste una direttiva vimrc che posso usare per disabilitare i file di scambio di default?

Qual è lo scopo dei file di scambio e quali funzionalità mi perderei eliminandoli?


FWIW, trovo fastidiosi anche i file di scambio, e per un po 'ho provato a usare noswapfilecome suggerito di seguito. Alla fine mi sono arreso e l'ho disattivato, perché a quanto pare i benefici superano i fastidi - buuuuuut in realtà non ricordo cosa mi abbia convinto a ripristinare l'utilizzo del file di scambio. Probabilmente il mio computer si è bloccato e non sono stato in grado di ripristinare alcuni file che avevo perso, il che sarebbe stato banale con i file di scambio attivati.
Kyle Strand,

Risposte:


89

Motivi per i file di scambio

I file di swap memorizzano le modifiche apportate al buffer. Se Vim o il tuo computer si arresta in modo anomalo, ti consentono di ripristinare tali modifiche.

I file di scambio forniscono anche un modo per evitare che più istanze di Vim modifichino lo stesso file. Questo può essere utile su sistemi multiutente o solo per sapere se hai già un altro Vim che sta modificando un file.

Disabilitazione dei file di scambio

Se vuoi disabilitare la creazione completa di file di scambio (cosa che non consiglierei), puoi aggiungere set noswapfileal tuo .vimrc. Questo imposta il valore globale dell'opzione. È quindi possibile sovrascriverlo per specifici buffer utilizzando :setlocal swapfiledurante l'esecuzione di Vim.

Organizzazione dei file di scambio

Se il tuo problema riguarda più i file extra sparsi nel tuo filesystem, puoi aggregare tutti i file di scambio in un unico posto. Ad esempio, creare una ~/.vim/tmpdirectory e quindi aggiungere

set directory^=$HOME/.vim/tmp//

al tuo .vimrc. L' 'directory'opzione contiene un elenco di directory che Vim utilizzerà per provare a memorizzare il file di scambio.

La ^=sintassi per :setanteporre il nome della directory alla testa dell'elenco, quindi Vim controllerà prima quella directory.

Alla //fine del nome della directory dice a Vim di utilizzare il percorso assoluto del file per creare il file di scambio in modo che non vi siano collisioni tra file con lo stesso nome da directory diverse.

Nota che questo impedirà a Vim di notare quando ci sono più utenti che provano a modificare lo stesso file. Poiché il file di scambio non si trova nella stessa directory del file originale, Vim dell'altro utente non sarà a conoscenza del file di scambio e non li avvertirà che è già in fase di modifica.


4
Qual è il vantaggio di scambiare file su persistente-annullare ora che è stato in vim per un po '?
alpha_989,

Io uso vim-auto-save. Ciò non depreca la necessità di file di scambio?
Kevin,

@Kevin Dipende. Se il plugin sta causando un salvataggio in ogni scenario in cui Vim scriverà il file di scambio, probabilmente. Altrimenti ci saranno ancora periodi in cui il buffer non viene salvato e un file di scambio può essere d'aiuto.
Jamessan,

@ alpha_989 Sono complementari. Un file di scambio consente di recuperare le modifiche non salvate. Il file di annullamento persistente ti consente di attraversare la cronologia degli annullamenti nelle sessioni di Vim, ma il file viene scritto solo quando salvi.
Jamessan,

Qualche metodo per impostare vim no swap per una sola istanza? ad es vim temp.txt --some-command-that-disable-swap. Il mio caso d'uso è che alcuni osservatori continueranno a guardare per eventuali cambiamenti nella directory, quindi solo per allora vorrei disabilitare lo scambio per prevenire la collisione.
Ng Sek Long,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.