*usr_11.txt* Pour Vim version 6.2.
MANUEL de l'UTILISATEUR VIM - par Bram Moolenaar
Recouvrement après un plantage
Votre ordinateur a planté ? Vous venez de perdre des heures passées à éditer
un texte ? Pas de panique ! Vim a conservé suffisamment d'informations sur
votre disque dur pour vous permettre de restaurer la majeure partie de votre
travail. Ce chapitre vous explique comment faire et aborde le fonctionnement
du fichier d'échange.
|11.1| Recouvrement ordinaire
|11.2| Emplacement du fichier d'échange
|11.3| Plantage ou pas ?
|11.4| Lectures complémentaires
Chapitre suivant : |usr_12.txt| Trucs et astuces
Chapitre précédent : |usr_10.txt| Effectuer des modifications importantes
Table des matières : |usr_toc.txt|
==============================================================================
*11.1* Recouvrement ordinaire
Dans la plupart des cas il est très simple de recouvrer un fichier, pour peu
que vous sachiez quel fichier vous étiez en train d'éditer (et que le disque
dur ne soit pas endommagé). Lancez Vim avec le nom du fichier, en ajoutant
l'argument "-r" :Vim lira le fichier d'échange (utilisé pour enregistrer le texte que vous
étiez en train d'éditer) et pourra lire certaines parties du fichier original.
Si tout se passe bien, vous verrez ces messages (avec des noms de fichiers
différents, bien sûr) :
Using swap file ".help.txt.swp"
Original file "~/vim/runtime/doc/help.txt"
Recovery completed. You should check if everything is OK.
(You might want to write out this file under another name
and run diff with the original file to check for changes)
Delete the .swp file afterwards.
Par mesure de sécurité, enregistrez ce fichier sous un autre nom :Comparez le fichier avec le fichier original pour vérifier s'il correspond
bien à ce que vous attendez. Vimdiff vous sera certainement utile dans cette
tâche |08.7|. Vérifiez que le fichier original ne contienne pas une version
plus récente (au cas où vous avez enregistrer le fichier juste avant que
l'ordinateur ne plante). Vérifiez également qu'aucune ligne ne manque (si
quelque chose a bloqué le recouvrement de Vim).
Si Vim émet des messages d'avertissements lors du recouvrement, lisez-les
attentivement. Cela reste rare.
Il est normal que les tout derniers changements ne puissent pas être
recouvrés. Vim écrit les changements sur le disque quand vous n'avez rien tapé
depuis au moins quatre secondes, ou après la saisie de deux cents caractères.
Ces seuils sont définis via les options 'updatetime' et 'updatecount'. Ainsi,
si Vim n'a pas eu l'occasion de faire un enregistrement avant le plantage du
système, les changements qui ont suivi la dernière écriture sur le disque
seront perdus.
Si vous éditiez un tampon sans nom de fichier, donnez une chaîne vide en
argument :Vous devez être dans le bon répertoire, sinon Vim ne peut pas trouver le
fichier d'échange.
==============================================================================
*11.2* Emplacement du fichier d'échange
Vim peut enregistrer le fichier d'échange à plusieurs endroits. Normalement,
il est placé dans le même répertoire que le fichier original. Pour le trouver,
rendez-vous dans le répertoire du fichier et utilisez :Vim listera les fichiers d'échange qu'il peut trouver. Il recherchera
également dans les autres répertoires où le fichier d'échange des fichiers du
répertoire courant peut être situé. Mais il ne trouvera pas les fichiers
d'échange dans les autres répertoires, car il ne parcourt pas toute
l'arborescence des répertoires.
La sortie de cette commande pourrait ressembler à ceci :
Swap files found:
In current directory:
1. .main.c.swp
owned by: mool dated: Tue May 29 21:00:25 2001
file name: ~mool/vim/vim6/src/main.c
modified: YES
user name: mool host name: masaka.moolenaar.net
process ID: 12525
In directory ~/tmp:
-- none --
In directory /var/tmp:
-- none --
In directory /tmp:
-- none --
S'il y a plusieurs fichiers d'échange qui semblent correspondre à celui que
vous voulez utiliser, une liste de ces fichiers est donnée et vous êtes invité
à entrer le numéro de celui que vous souhaitez utiliser. Examinez
attentivement les horodatages avant de vous décider.
Si vous ne savez pas lequel utiliser, essayez-les un à un et vérifiez si
les fichiers produits correspondent à ce que vous attendez.
UTILISER UN FICHIER D'ÉCHANGE SPÉCIFIQUE
Si vous savez quel fichier d'échange doit être utilisé, vous pouvez effectuer
un recouvrement en donnant le nom du fichier d'échange. Vim retrouvera alors
le nom du fichier original à partir du fichier d'échange.
Exemple :C'est également utile quand le fichier d'échange est dans un autre répertoire
que celui attendu. Si cela ne fonctionne toujours pas, relevez les noms de
fichiers rapportés par Vim et renommez les fichiers en conséquence. Examinez
l'option 'directory' pour voir où Vim peut avoir placé le fichier d'échange.
NOTE :
Vim essaie de trouver le fichier d'échange dans les répertoires de
l'option 'dir', en recherchant les fichiers qui correspondent à
"nomfichier.sw?". Si l'expansion des caractères d'englobement ne
fonctionne pas (p. ex., lorsque l'option 'shell' est erronée), Vim
effectue un essai ultime pour trouver le fichier "nomfichier.swp". Si
cela échoue aussi, vous devrez donner le nom du fichier d'échange
vous-même pour pouvoir recouvrer le fichier.
==============================================================================
*11.3* Plantage ou pas ? *ATTENTION* *E325*
Vim essaie de vous protéger contre des accidents stupides. Supposons que vous
ayez innocemment lancé l'édition d'un fichier, en espérant voir celui-ci
s'afficher. À la place, Vim donne un très long message :
E325: ATTENTION
Found a swap file by the name ".main.c.swp"
owned by: mool dated: Tue May 29 21:09:28 2001
file name: ~mool/vim/vim6/src/main.c
modified: no
user name: mool host name: masaka.moolenaar.net
process ID: 12559 (still running)
While opening file "main.c"
dated: Tue May 29 19:46:12 2001
(1) Another program may be editing the same file.
If this is the case, be careful not to end up with two
different instances of the same file when making changes.
Quit, or continue with caution.
(2) An edit session for this file crashed.
If this is the case, use ":recover" or "vim -r main.c"
to recover the changes (see ":help recovery").
If you did this already, delete the swap file ".main.c.swp"
to avoid this message.
Vous obtenez ce message parce que, quand l'édition d'un fichier commence, Vim
contrôle si un fichier d'échange existe déjà pour ce fichier. S'il y en a un,
c'est que quelque chose cloche. Deux possibilités :
1. Une autre session d'édition est active pour ce fichier. Recherchez dans le
message la ligne avec "process ID". Elle devrait ressembler à ceci :
process ID: 12559 (still running)
Le texte "(still running)" indique que le processus qui édite ce fichier
fonctionne sur le même ordinateur. Si vous travaillez sur un système
non-Unix, vous n'aurez pas cette indication supplémentaire. Si vous éditez
un fichier via réseau, vous risquez de ne pas voir cette indication, car le
processus peut fonctionner sur un autre ordinateur. Dans ces deux cas, vous
devez déterminer vous-même quelle est la situation.
Si un autre Vim édite le même fichier, la poursuite de l'édition
aboutira à deux versions du même fichier. La dernière qui sera écrite
écrasera l'autre et provoquera la perte de ses modifications. Il est plus
prudent de quitter Vim.
2. Le fichier d'échange provient d'un plantage précédent de Vim ou de
l'ordinateur. Examinez les horodatages mentionnés dans le message. Si
l'horodatage du fichier d'échange est plus récent que le fichier que vous
étiez en train d'éditer et que cette ligne apparaît
modified: YES
alors vous êtes très certainement confronté à une session d'édition plantée
qui a mal été recouvrée.
Si l'horodatage du fichier est plus récent que celui du fichier
d'échange, alors soit il a été modifié après le plantage (peut-être
avez-vous déjà recouvré le fichier mais n'avez pas supprimé le fichier
d'échange), soit le fichier avait été enregistré avant le plantage mais
après la dernière écriture du fichier d'échange (auquel cas vous êtes
chanceux : vous n'avez même plus besoin de l'ancien fichier d'échange).
Dans ces situations, Vim vous avertira avec cette ligne supplémentaire :
NEWER than swap file!
QUE FAIRE ?
Si les dialogues sont supportés, vous aurez à choisir entre cinq actions :
Swap file ".main.c.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit, (D)elete it:
O Ouvre le fichier en lecture seule. À utiliser quand vous voulez simplement
voir le fichier sans le recouvrer. Cela peut être utile quand vous savez
qu'une autre personne est en train d'éditer le fichier et que vous
souhaitez juste le lire sans effectuer de modifications.
E Édite le fichier malgré tout. À utiliser avec précaution ! Si le fichier
est en cours d'édition dans un autre Vim, vous risquez de vous retrouver
avec deux versions du fichier. Vim essaiera de vous avertir si cela se
produit, mais mieux vaux prévenir que guérir.
R Recouvre le fichier à partir du fichier d'échange. À utiliser si vous
savez que le fichier d'échange contient des modifications que vous
souhaitez recouvrer.
Q Quitte. Cela évite de lancer l'édition du fichier. À utiliser si un autre
Vim est en train d'éditer le même fichier.
Si vous venez juste de démarrer Vim, cela fera sortir de Vim. Si vous
avez lancé Vim avec des fichiers dans plusieurs fenêtres, Vim quittera
uniquement s'il y a un fichier d'échange pour le premier. Quand une
commande d'édition est utilisée, le fichier ne sera pas chargé et vous
serez ramené au dernier fichier édité.
D Supprime le fichier d'échange. À utiliser si vous êtes sûrs de ne plus en
avoir besoin. Par exemple, quand il ne contient pas de changements, ou
quand le fichier lui-même est plus récent que le fichier d'échange.
Sur Unix, ce choix n'est proposé que lorsque le processus qui a créé le
fichier d'échange ne semble pas être en cours d'exécution.
Si vous n'obtenez pas ce dialogue (vous utilisez une version de Vim qui ne le
supporte pas), vous devrez opérer manuellement. Pour recouvrer le fichier,
utilisez cette commande :Vim n'est pas toujours capable de détecter qu'un fichier d'échange existe
déjà. Par exemple, dans les cas où une autre session d'édition place les
fichiers d'échange dans un autre répertoire, ou quand le chemin d'un fichier
est différent lorsque vous l'éditez sur d'autres machines. N'escomptez pas que
Vim vous avertisse à chaque fois.
Si vous ne voulez vraiment pas voir ce message, vous pouvez ajouter le drapeau
'A' à l'option 'shortmess'. Mais ce recours devrait rester exceptionnel.
==============================================================================
*11.4* Lectures complémentaires
|swap-file| Une explication sur l'emplacement où le fichier d'échange sera
créé et sur son nom.
|:preserve| Écrit manuellement le fichier d'échange sur le disque.
|:swapname| Affiche le nom du fichier d'échange pour le fichier courant.
'updatecount' Nombre de saisies clavier après lesquelles le fichier
d'échange est écrit sur le disque.
'updatetime' Délai après lequel le fichier d'échange est écrit sur le
disque.
'swapsync' Spécifie si le disque est synchronisé lorsque le fichier
d'échange est écrit.
'directory' Liste de noms de répertoires où enregistrer le fichier
d'échange.
'maxmem' Limite d'utilisation de la mémoire avant l'écriture du texte
dans le fichier d'échange.
'maxmemtot' Idem, mais pour tous les fichiers au total.
==============================================================================
Chapitre suivant : |usr_12.txt| Trucs et astuces
Copyright : voir |manual-copyright| vim:tw=78:ts=8:ft=help:norl: