Risposte:
vim -r .swp
Questo entra in modalità di recupero e ti dà maggiori informazioni. Penso che questo sia quello che vuoi.
.swX
-file vengono lasciati indietro se una sessione con un file non salvato viene uccisa / si arresta in modo anomalo / succede qualcosa di brutto. Sono presenti anche durante l'apertura di un buffer non salvato in una sessione Vim. vim -r
legge questi file temporanei e ricrea il contenuto. Dopo averlo recuperato, salvalo come al solito, ad es :w newfilename
.
Non è necessario disporre del file originale per ripristinare .swp. Basta aprire il file come se esistesse. vim cercherà il file con estensione .swp e offrirà di recuperarlo.
per esempio:
$ ls -a
. .. .test.txt.swp
$ vim test.txt
[...]
Swap file ".test.txt.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (D)elete it, (Q)uit, (A)bort:
Premi R per recuperarlo e: wq il file
Modifica: si noti che il file .swp contiene solo le modifiche apportate al file (vedere commento). Ciò significa che dovrai recuperare una copia recente del file dal backup e quindi utilizzare vim per ripristinare le ultime modifiche. Se non hai una copia di backup del file, sei davvero sfortunato.
The original file is no longer needed for recovery.
:preserve
e :set cpoptions=...&
lascia un file .swp e .swo nella directory e offre il ripristino da entrambi. Usando vim -r <file>
puoi scegliere tra .swp e .swo. Ulteriori modifiche generano .swn, .swm, ecc., Che sembrano essere la somma parziale degli swap fino a quel punto. Puoi tornare alla versione che preferisci e modificare (~ = fork) o salvare (~ = stash). Alla fine puoi caricare i file di scambio, demonizzare i loro backup, ecc. Potrei sbagliarmi sui dettagli quando si tratta di file più grandi - non sono sicuro di come ciò influisca sui file di scambio extra - vedi sotto.
Apri il file originale usando vim e scegli l'opzione di recupero.
Dopo aver letto i commenti di Vegar Westerlund e Heptite, volevo sapere a che punto vim necessita del file originale (o di un backup) per recuperare da un file .swp. Ecco cosa ha fatto:
Ho aperto un file di 975 righe, l'ho modificato sulla riga 949 (creazione di un .swp
file) e ho terminato il processo, quindi ho eliminato l'originale. $ vim Original_File
chiesto se volevo recuperare da .swp »> sì; solo le prime 68 righe e le ultime 34 righe (iniziando 8 righe sopra la mia modifica) sono state effettivamente recuperate.
Ho quindi ripetuto il test con file più piccoli: da 20 a 200 righe, il file .swp conteneva il 100% del contenuto originale . Ma a 300 righe, solo le prime 68 e le 18 ultime righe (iniziando 2 righe sopra la mia modifica) sono state incluse in .swp.
In conclusione, è bene sapere che vim salva sempre "header" e "bottom" del file nei file .swp. Forse c'è un'impostazione per controllare quante righe dovrebbe contenere un file .swp?