Où VIM (gvim / macvim) conserve-t-il les fichiers d'échange des tampons non sauvegardés / non nommés?


52

Où VIM (gvim / macvim) conserve-t-il les fichiers d'échange des tampons non sauvegardés / non nommés? (Si c'est le cas du tout).

Contexte: Pendant tout un séminaire semi-intense, je prenais des notes dans une mémoire tampon MacVim non nommée / non sauvegardée lorsque le MacBook était à court de ressources et éteint de nulle part (il ne dormait pas / ne mettait pas en veille comme il le ferait habituellement).

Question: Quelqu'un peut-il savoir s’il existe une chance que le travail non enregistré ait été enregistré dans un fichier swap (.swp) ou similaire, qui pourrait être récupéré?

Détails du système: Cela s’est notamment produit avec MacVim sous Mac OS X 10.5.8 (mais des astuces de récupération possibles pour d’autres versions présentent également un intérêt). Je n'ai pas encore redémarré MacVim au cas où cela déclencherait un processus de nettoyage.


1
Clarification: Par non enregistré, je veux dire jamais enregistré. Le fichier a été créé en appuyant sur Commande-T (je pense être équivalent à: tabe), c’est-à-dire qu’un nouveau tampon non nommé est ouvert dans un nouvel onglet. (Je ferais habituellement ': sav un nom de fichier' plus tard.
davur

Peu importe Voir les ajouts à ma réponse.
frabjous

Réponses:


60

Lancez vim et essayez:

:recover <filename>

Si le fichier n'a jamais eu de nom, alors simplement:

:recover

C'est ton meilleur pari. Pour plus d'informations sur les fichiers d'échange et la récupération, voir:

:help usr_11

En ce qui concerne les fichiers d'échange, ils sont généralement enregistrés dans le même répertoire que le fichier en cours d'édition, mais avec un. ajout du début pour le rendre caché et .swp à la fin, mais il est possible de les déplacer ailleurs avec quelque chose comme:

:set directory=~/vimswap

ou similaire.

Voir:

:help swap

Pour tous les détails.

Un fichier d'échange vim n'est pas identique au tampon modifié, cependant, assurez-vous de lire sur ce qui peut être fait pour la récupération.


EDIT : commentaires répondant à la question:

[…] Il semble que dans votre répertoire de travail actuel, ~ / tmp, / var / tmp et / tmp, vous trouverez des fichiers d'échange. Dans mon cas, j'ai toujours un ensemble de répertoires de travail en cours et c'est là qu'il a été enregistré. - dsclementsen 5 oct. 10 à 1:42

Veillez également à consulter l'argument de la ligne de commande vim -r. Cela imprimera tous les fichiers d'échange trouvés et leur emplacement. De plus, il contiendra de nombreuses informations supplémentaires telles que la date / le nom d'utilisateur / etc / modifié ... - Neg_EV 5 oct. 10 à 13:49


Cela ne va pas aider. Par non sauvé, je veux dire jamais sauvé. Signification j'ai ouvert un nouveau tampon avec: tabe ou (Commande + T). Nous parlons donc d'un tampon non enregistré / non nommé. Existe-t-il un emplacement par défaut où ce type de travail non enregistré est stocké?
davur

3
Essayez :recoversans nom de fichier. Je viens de tester cela pour récupérer un fichier sans nom et cela a fonctionné. Quoi qu’il en soit, même si cette commande particulière n’aide en rien, la lecture de ces fichiers d’aide peut l’être.
frabjous

1
Ce n'est pas aussi loin que je peux dire. Je viens de tester en tuant vim en externe lors de l'édition d'un nouveau fichier. Mais quand je courais recoversans argument, cela me permettait de choisir même parmi des sessions plus anciennes. Quoi qu'il en soit, le fichier .swp pour un tampon sans nom est probablement dans / tmp, mais ce serait ailleurs, selon que vous l'ayez ou non set directory= <something>.
frabjous

2
Veillez également à consulter l'argument de la ligne de commande vim -r. Cela imprimera tous les fichiers d'échange trouvés et leur emplacement. De plus, il contiendra de nombreuses informations supplémentaires telles que la date / le nom d'utilisateur / etc / modifié ...
Neg_EV

1
J'ai dû utiliser la commande :recover!pour récupérer mon fichier non enregistré.

2

Je travaille sur Windows 10 et je :recovern'ai pas trouvé de fichier d'échange. vim -rrépertorié le fichier d'échange de la dernière session de mise à jour (également jamais enregistrée) nommé _.swp. La récupération était possible avec :recover _.


1

La réponse est: partout. L'astuce consiste à trouver le bon. Certains se trouvent dans votre répertoire / tmp, mais bon nombre d'entre eux se trouvent quelque part dans votre répertoire personnel.

Il existe peut-être des moyens plus efficaces de le faire, mais ce qui suit a fonctionné pour moi lorsque j'ai perdu un fichier non nommé (sur MacBook):

dans le répertoire personnel, recherchez des fichiers de sauvegarde (cela prend quelques secondes et peut probablement être rendu plus intelligent):

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

fichier ouvert:

vim findVimBackups.txt

supprimez les noms de fichiers qui ne sont pas destinés aux sauvegardes de fichiers non nommés:

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

Je vois maintenant une liste des emplacements des fichiers de sauvegarde non nommés. Dans chacun de ces répertoires, j'exécute ce qui suit jusqu'à ce que je trouve le ou les fichiers d'aujourd'hui:

ls -ltra <directory>

Je cd dans le bon répertoire et ouvre vim et tapez: récupérer et sélectionnez la sauvegarde correcte.


0

Il semble qu’ils se retrouveront dans votre répertoire de travail. :pwdC’est là où vous avez ouvert vim ou, alternativement, vous l’avez peut-être défini avec :cdou similaire.

les fichiers d'échange pour des tampons non nommés semblent juste être déversés là-bas sans nom de fichier, vous allez donc vous retrouver avec .swp .swn .swo etc. différents suffixes!

J'imaginais que de nombreuses mémoires tampons non nommées avec des modifications pouvaient en être la cause, et la suppression de ces mémoires tampons a entraîné la disparition des fichiers mystères.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.