2013-09-05 7 views
6

Come posso ripristinare un file vim dal file undo senza colpire undo?Recuperare un file vim dal file .un ~ senza il comando di annullamento

Avevo un file Vim che ho salvato durante l'aggiunta di testo. Poi ho eseguito un comando python che ha svuotato il contenuto del file, e posso vedere alcune delle parole contenute nel file .un~ del file. Quando provo a annullare il file, viene indicato Already at latest change. Non riesco a trovare il file di scambio nella directory dei file di scambio.

+0

non riesci a trovare il file swp, perché sei uscito da vim. qual è l'output di 'set bk?' e 'set wb?' – Kent

+0

Entrambi i comandi non producono output. –

+0

il punto di domanda '?', È una parte del comando. Sto cercando di ottenere le impostazioni di backup, per vedere se è possibile ripristinare il file dal tuo file vim-backup. – Kent

risposta

7

Non è possibile. Le informazioni di annullamento sono collegate all'ultima conoscenza di Vim del contenuto del file; quando non corrispondono più, Vim non può riapplicare le modifiche. Questo è documentato in :help undo-persistence:

Vim rilevare se un file di annullamento non è più sincronizzato con il file è stato scritto per (con un hash del contenuto del file) e ignorare quando il file è stato cambiato dopo il file di annullamento è stato scritto, per prevenire la corruzione.

Il meglio che puoi fare è cercare di recuperare manualmente i bit riconoscibili nel file di annullamento, ad es. con un editor esadecimale o la modalità binaria di Vim.

+0

Sono riuscito a recuperarne un po 'eseguendo le stringhe sul file di annullamento –

4

Non è esattamente possibile, poiché il file di annullamento contiene solo il testo che è stato modificato in un'unica modifica. Se a un certo punto hai ricaricato il file, l'undofile dovrebbe contenere il buffer completo per quello e partendo da lì si potrebbe teoricamente recuperare il file (passando attraverso gli stati di annullamento).

Ho scritto su questo prima al vim_use mailinglist here e here (which even contains a patch, that let's you force reading in the undo-file)

Si potrebbe provare a rattoppare vim e vedere se è possibile recuperare almeno alcuni dati.

Problemi correlati