Vim salva automaticamente?


13

Da :help swap-file:

Aggiornamento del file di scambio

Il file di scambio viene aggiornato dopo aver digitato 200 caratteri o quando non è stato digitato nulla per quattro secondi. Questo succede solo se il buffer è stato modificato, non solo quando ci si sposta. Il motivo per cui non è sempre aggiornato è che ciò rallenterebbe troppo il normale lavoro. È possibile modificare il conteggio di 200 caratteri con l'opzione 'updatecount'. È possibile impostare l'ora con l'opzione 'updatetime'. Il tempo è espresso in millisecondi. Dopo aver scritto sul file di scambio, Vim sincronizza il file su disco. Questo richiede del tempo, specialmente su sistemi Unix occupati. Se non lo desideri, puoi impostare l'opzione 'swapsync' su una stringa vuota. Tuttavia, il rischio di perdere il lavoro aumenta. Su alcuni sistemi non Unix (MS-DOS, Amiga) il file di scambio non verrà affatto scritto.

Da questo ho alcune domande:

  1. Questo significa che Vim salva di tanto in tanto il tuo lavoro?

  2. "Dopo aver scritto sul file di scambio Vim sincronizza il file su disco." Cosa significa questo? Si riferisce al file che viene scritto prima nella memoria e poi sul disco o è qualcos'altro?

  3. Di 'che sto prendendo appunti per le lezioni: scrivo velocemente e non ho quasi bisogno di uscire dalla modalità Inserisci. Ma molte volte cambio a Normale solo per salvare il mio lavoro. Devo farlo o Vim si assicura che la maggior parte del mio lavoro venga salvata anche se non esco dalla modalità di inserimento?

Risposte:


9
  1. Sì, salva nel file di scambio.

Puoi fare un rapido test per avere un'idea di questo. Vai a una directory. Dì vim notest.txte scrivi del testo. Non è nemmeno necessario salvare il file.

Se elenchi i file nella directory di lavoro, troverai un file di scambio. Copialo in un'altra directory (dove non hai file "notes.txt", come dire vim notest.txt.

Ottieni una nota sullo swap esistente, sulla sua modifica e sulle opzioni di open in sola lettura, ripristino, ecc. Scegli recuperare e voilà! Una "copia" del tuo file.

  1. Sì, lo scambio è tenuto in memoria.

Quando Vim legge un file, lo aggiunge alla RAM. Questo è sia per i nuovi che per quelli esistenti (file ancora non salvati). Quando lo swap viene salvato, viene scaricato sul disco. L'HDD. Dalla RAM.

  1. Sì e no.

Con le impostazioni predefinite, la maggior parte del tuo lavoro viene salvata. Questo è per ogni 200 caratteri inseriti o quando hai una pausa di 4 secondi. Anche se mi fido del salvataggio del file di scambio, mi piace salvare il mio lavoro quando so di essere su un sistema instabile. Ma, detto questo, uno è abbastanza certo di mantenere il lavoro a meno che non si debba essere molto sfortunati e il sistema di hosting diventa panico subito dopo aver scritto una frase molto importante.

In breve, è sufficiente salvare quando la lezione è finita. Se il sistema dovesse fermarsi per qualsiasi motivo in mezzo a una classe, il lavoro è lì fino allo scambio.

Naturalmente: se sei molto sfortunato, durante la scrittura del file di scambio può verificarsi un arresto anomalo. Di conseguenza, il file di scambio potrebbe essere danneggiato. Non l'ho mai provato e non sono sicuro di quali parti del file potrebbero essere incasinate, ma potrebbe valere la pena pensarci. Poiché il file di scambio è binario (in mancanza di una parola migliore), sembra che sia più fragile di un semplice file di testo.


Come nota a margine. Almeno quando si utilizza la directory di lavoro per lo scambio, il file di scambio è indipendente dalla posizione quando si tratta di recupero. Pertanto, è possibile copiare il file di scambio in una nuova posizione e ripristinare il file come nuovo file. Si noti solo che il nome del file è hardcoded nello swap. Come tale non puoi dire:

cp .foo.txt.swp .bar.txt.swp

e

vim bar.txt

e aspettarsi il file di scambio di foo.txt.

Se sei molto interessato, puoi farlo (su * nix):

xxd -s 108 -l 800 -ps .foo.txt.swp | xxd -r -p

per ottenere il percorso (con alcune stranezze) del file originale. Come vedrai viene aggiunto il percorso completo, ad esempio:

~user/blah/blah/notes.txt

ma solo il nome di base viene utilizzato per il controllo di scambio.

A questo proposito puoi anche controllare l' vim -ropzione - che elenca i file di scambio nelle directory correnti e inferiori. Vedere :h crash-recoverycon argomenti secondari.


0

Per me va bene salvare il buffer ogni volta che il testo viene modificato:

autocmd TextChanged,TextChangedI <buffer> silent write

L'ho trovato qui . Per me funziona.

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.