Non fatevi prendere dal panico!
Il recupero dei file è sempre sicuro, perché vim non scrive mai le modifiche finché non le scrivi tu stesso. Quindi il ripristino da un file di scambio e la chiusura senza salvataggio non modificherà nulla.
Organizza i tuoi file di scambio:
Ottieni vim per mettere tutti i tuoi file di scambio nello stesso posto, in modo da sapere sempre dove sono:
set directory^=$HOME/.vim/swap//
o dove preferisci. Utilizzare //
alla fine del nome file fa sì che vim usi percorsi di file assoluti per i nomi dei file di scambio in modo da non ottenere collisioni di nomi. Assicurati che la directory esista, o vim non la utilizzerà (non la creerà per te).
Nota: questo funziona solo su variabili d'ambiente, se vuoi usare una variabile vimscript allora dobbiamo usare un po 'di :execute
magia:
execute "set directory^=".my_vim_home_var."/swap//"
Diff le differenze:
L'aiuto di Vim suggerisce un comando molto utile per utilizzare in questa situazione: :DiffOrig
. Non è un comando vim predefinito , quindi copia l'implementazione dal :h :DiffOrig
tuo vimrc. (è anche $VIMRUNTIME/defaults.vim
se hai vim8). Ora puoi recuperare il file ed eseguire semplicemente DiffOrig per ottenere un vimdiff di ciò che è cambiato dalla versione non modificata.
Se si desidera confrontare il contenuto di più file di scambio, ripristinare il file con ciascun diverso file di scambio e quindi scrivere il risultato in file temporanei. Ora carica i file ed esegui :diffthis
su ciascun file, apporta le modifiche desiderate, riscrivi il file originale ed elimina i file temporanei e di scambio.
Comandi utili:
:swapname
: ottieni il nome che vim sta usando per il file di scambio per il buffer corrente ( :h :swapname
)
:recover
: ripristina il file selezionato, come quando avvii vim e premi R( :h :recover
)
Dai un'occhiata alla guida:
Vim ha un'intera sezione del manuale utente sul recupero: :usr_11.txt
Guida di riferimento del Vim su file di swap: :h swap-file
, h recovery
Aiuto sull'opzione directory (per impostare la posizione del file di swap)::h 'directory'
Modifica: esempio modificato per l'impostazione della directory, come sottolineato nei commenti di @B Layer