Dove VIM (gvim / macvim) conserva i file di scambio per buffer non salvati / senza nome?


52

Dove VIM (gvim / macvim) conserva i file di scambio per buffer non salvati / senza nome? (Se lo fa affatto).

Sfondo: Durante un seminario semi intenso stavo prendendo appunti in un buffer MacVim senza nome / non salvato quando il MacBook esauriva il succo e si spegneva dal nulla (non dormiva / ibernava come al solito).

Domanda: Qualcuno potrebbe sapere se c'è qualche possibilità che il lavoro non salvato possa essere stato salvato in un file di scambio (.swp) o simili, che potrebbe essere recuperato?

Dettagli del sistema: In particolare, ciò è accaduto usando MacVim su un Mac OS X 10.5.8 (ma anche i possibili suggerimenti per il recupero di altre versioni). Non ho ancora riavviato MacVim nel caso in cui ciò avvii un processo di pulizia.


1
Chiarimento: per non salvato intendo mai salvato. Il file è stato creato premendo Command-T (penso equivalente a: tabe), ovvero un nuovo buffer senza nome viene aperto in una nuova scheda. (Di solito farei ": salva un po 'di nomefile" in una fase successiva.
David

Non importa Vedi le aggiunte alla mia risposta.
frabjous

Risposte:


60

Avvia vim e prova:

:recover <filename>

Se il file non ha mai avuto un nome, semplicemente:

:recover

Questa è la tua scommessa migliore. Per ulteriori informazioni sui file di scambio e sul ripristino, vedere:

:help usr_11

Per quanto riguarda i file di scambio, in genere vengono salvati nella stessa directory del file in fase di modifica, ma con un. aggiunto l'inizio per renderlo nascosto e .swp alla fine, ma è possibile spostarli altrove con qualcosa del tipo:

:set directory=~/vimswap

o simili.

Vedere:

:help swap

Per tutti i dettagli

Un file di scambio vim non è lo stesso del buffer modificato, quindi assicurati di leggere lì su cosa si può fare per il recupero.


MODIFICA : commenti rispondendo alla domanda:

[…] Sembra che cerchi nella tua directory di lavoro corrente, ~ / tmp, / var / tmp e / tmp i file di scambio e nel mio caso ho sempre un set di directory di lavoro corrente ed è lì che è stato salvato. - dsclementsen, 5 ottobre 10 alle 1:42

inoltre, assicurati di dare un'occhiata alla riga di comando vim -r arg. Questo stamperà tutti i file di scambio trovati e dove si trovano. Inoltre avrà molte informazioni extra come data / modifica / nome utente / ecc ... - Neg_EV 5 ottobre 10 alle 13:49


Questo non aiuterà. Per non salvato, intendo dire mai salvato. Significato ho aperto un nuovo buffer con: tabe o (Command + T). Quindi stiamo parlando di un buffer non salvato / senza nome. Esiste un percorso predefinito in cui è memorizzato questo tipo di lavoro non salvato?
David,

3
Prova :recoversenza nome file. L'ho appena provato per recuperare un file senza nome e ha funzionato. Comunque, anche se quel particolare comando non aiuta, la lettura di quei file di aiuto potrebbe.
frabjous

1
Non per quanto posso dire. Ho appena provato uccidendo vim esternamente durante la modifica di un nuovo file. Ma quando ho corso recoversenza alcuna discussione, mi ha permesso di scegliere anche da alcune sessioni più vecchie. Ad ogni modo, il file .swp per un buffer non modificato è probabilmente in / tmp, ma sarebbe da qualche altra parte a seconda che tu lo abbia fatto set directory= <something>.
frabjous

2
inoltre, assicurati di dare un'occhiata alla riga di comando vim -r arg. Questo stamperà tutti i file di scambio trovati e dove si trovano. Inoltre avrà molte informazioni extra come data / modifica / nome utente / ecc ...
Neg_EV

1
Ho dovuto usare il comando :recover!per recuperare il mio file non salvato.

2

Lavoro su Windows 10 e :recovernon ho trovato un file di scambio. vim -relencato il file di scambio dall'ultima sessione di modifica (anche mai salvata) denominato _.swp. Il recupero è stato possibile con :recover _.


1

La risposta è: ovunque. Il trucco è trovare quello giusto. Alcuni sono nella tua directory / tmp, ma molti sono da qualche parte nella tua home directory.

Ci sono forse modi più efficienti per farlo, ma quanto segue ha funzionato per me quando ho perso un file senza nome (su MacBook):

nella home directory, cerca i file di backup (richiede alcuni secondi e probabilmente può essere reso più intelligente):

find ./ -name ".s*" > findVimBackups.txt

apri il file:

vim findVimBackups.txt

rimuovere i nomi di file che non sono destinati al backup di file senza nome:

:g!/\/\.s..$/d
:g/svn/d

Ora vedo un elenco delle posizioni dei file di backup senza nome. In ognuna di quelle directory eseguo quanto segue fino a quando non trovo i file da oggi:

ls -ltra <directory>

Ho cd nella directory giusta e apro vim e digitare: recuperare e selezionare il backup corretto.


0

Sembra che finiranno nella tua directory di lavoro :pwdQuesto è dove hai aperto vim o in alternativa potresti averlo impostato usando :cdo simili.

i file di scambio con buffer senza nome sembrano semplicemente essere scaricati lì senza nome di file, quindi finirai con .swp .swn .swo ecc. L'ho scoperto non quando provavo a recuperare qualcosa ma quando il mio file hg ignore non copriva abbastanza suffissi diversi!

Immagino che avere molti buffer senza nome con le modifiche potrebbe essere stata la causa e l'eliminazione di questi buffer ha causato la scomparsa dei file misteriosi

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.