Ce message est en fait très important si vous vous souciez de ne pas perdre texte que vous n'avez potentiellement pas sauvegardé. Il devrait pas être considérés comme gênants et devraient pas vous obliger à supprimer précipitamment le fichier d'échange ou à configurer vim
de fonctionner sans elle.
Tout fichier que vous modifiez avec vim
aura un fichier d'échange correspondant pendant que vous éditez qui vim
pour suivre les changements. Lorsque vous quittez l'édition d'un fichier, vim
éliminera automatiquement le fichier d'échange correspondant. Par conséquent, l'existence d'un fichier d'échange et votre tentative d'écrire par-dessus le fichier d'origine doivent être prises en considération et faire l'objet d'une action appropriée.
Les deux scénarios présentés dans le message ( E325: ATTENTION Found a swap file
) sont en fait assez courants : (1) soit un autre vim
est en train d'éditer le même fichier que vous essayez d'éditer (il peut s'agir d'une autre personne - dans ce cas, c'est le programme realmente n'aurait pas de sens de supprimer aveuglément le fichier d'échange - ou vous pourriez être dans une autre fenêtre de terminal ou un autre onglet), ou (2) un précédent vim
s'est interrompue (le plus souvent, cela se produit lorsque vous éditez à distance et que la session réseau est interrompue - dans ce cas, la session vim n'a pas été quittée normalement, et le fichier .swp
reste derrière ; un autre exemple de ce deuxième scénario est que vous avez accidentellement fermé la fenêtre du terminal ou l'onglet qui avait un fichier vim
session).
Lorsque je rencontre ce message, je me demande d'abord si je suis en train d'éditer ce fichier dans une autre fenêtre de terminal ou dans un autre onglet, car je travaille normalement avec plusieurs fenêtres de terminal comportant chacune plusieurs onglets :
Si je me rends compte que je suis en train d'éditer dans un autre endroit, et peut y revenir J'appuie ensuite sur la touche q
pour (Q)uit
cette session supplémentaire, et revenir à l'édition par le biais de la session d'origine. vim
session.
Parfois, si je ne suis pas tout à fait sûr, je (Q)uit
puis exécutez jobs
pour vérifier si je suis en train d'exécuter vim
dans le même terminal ; si rien ne s'affiche, je lance ps -ef | grep vim
pour vérifier si je suis en cours d'exécution vim
ailleurs (c'est-à-dire dans une autre fenêtre de terminal ou un autre onglet). Le fait est que j'essaie toujours de reprendre l'édition par le biais de la fenêtre d'origine de vim
session.
Si je suis certain de ne pas pouvoir revenir à la session d'édition initiale et que les options suivantes me sont toujours proposées, j'appuie sur la touche r
a (R)ecover
.
Swap file ".notes.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit, (A)bort:
Appuyer sur r
vous verrez apparaître un message comme celui-ci :
Swap file ".notes.swp" already exists!
"notes" 18L, 46C
Using swap file ".notes.swp"
Original file "/private/tmp/notes"
Recovery completed. Buffer contents equals file contents.
You may want to delete the .swp file now.
Press ENTER or type command to continue
Si, en revanche, je ne suis plus confronté à ces options, parce que je suis à l'invite Shell, alors j'exécute vim
avec le -r
comme suit :
vim -r notes
Le message qui en résultera sera similaire :
Using swap file ".notes.swp"
Original file "/private/tmp/notes"
Recovery completed. Buffer contents equals file contents.
You may want to delete the .swp file now.
Press ENTER or type command to continue
Dans tous les cas, appuyez sur ENTER
pour continuer, et vous verrez votre fichier.
Nota: Si Vim a des doutes sur ce qu'il a trouvé, il affichera un message d'erreur et insérera des lignes avec " ???" dans le texte. Si vous voyez un message d'erreur pendant la récupération, cherchez " ???" dans le fichier pour voir ce qui ne va pas. Il se peut que vous deviez faire un copier-coller pour obtenir le texte dont vous avez besoin.
La remarque la plus fréquente est "???LIGNES MANQUANTES". Cela signifie que Vim ne peut pas lire le texte du fichier original. Cela peut se produire si le système est tombé en panne et que des parties du fichier original n'ont pas été sauvegardées.
Cela dit, je n'ai jamais vu ces ???
Il doit donc s'agir d'un véritable rare occurrence.
Ensuite, enregistrez (c'est-à-dire écrivez) le contenu dans un autre fichier (en général, j'ajoute simplement "2" à la fin du nom du fichier original) :
:w notes2
Ensuite, quittez de force cette vim
session :
:q!
Comparez ensuite les deux fichiers :
diff notes notes2
Si le diff
ne renvoie rien Cela signifie qu'il n'y a pas de différence et qu'il n'y a pas de danger à supprimer le fichier d'échange et le deuxième fichier :
rm .notes.swp notes2
À ce stade, ouvrez le fichier original et procédez comme s'il n'y avait jamais eu de problème :
vim notes
Si le diff
renvoie quelque chose Cela signifie que le fichier d'origine (via le fichier d'échange) a subi des modifications qui, grâce à la récupération, ont été enregistrées dans le second fichier.
Étant donné que ces modifications sont capturées dans le second fichier, vous pouvez en toute sécurité supprimer le fichier d'échange et remplacer le fichier d'origine par le second :
rm .notes.swp
remove .notes.swp? y
mv notes2 notes
overwrite notes? (y/n [n]) y
À ce stade, ouvrez le fichier original et procédez comme s'il n'y avait jamais eu de problème :
vim notes
Cela semble représenter beaucoup de travail, mais une fois que l'on s'est habitué au flux de travail, cela ne prend que 20 secondes au maximum.