*recover.txt* Pour Vim version 6.2.
MANUEL de RÉFÉRENCE VIM - par Bram Moolenaar
Recouvrement après un plantage *crash-recovery*
Vous venez de passer plusieurs heures à saisir ce texte qui devait
impérativement être terminé pour le lendemain matin, et soudain patatras !
votre ordinateur plante.
GARDEZ VOTRE CALME !
Vous pouvez recouvrer la plupart de vos changements à partir des fichiers que
Vim utilise pour enregistrer le contenu des fichiers en cours d'édition. La
plupart du temps, vous pouvez recouvrer votre travail avec cette commande :1. Le fichier d'échange |swap-file|
2. Recouvrement |recovery|
==============================================================================
1. Le fichier d'échange *swap-file*
Vim enregistre toutes vos modifications dans un fichier d'échange. En
utilisant le fichier original duquel vous êtes parti plus le fichier
d'échange, vous pouvez recouvrer le plus gros de votre travail.
*:sw* *:swapname*
Vous pouvez voir le nom du fichier d'échange courant avec la commande :
:sw[apname]
Le nom du fichier d'échange est normalement le même que celui du fichier que
vous éditez, plus l'extension ".swp".
- Sous Unix, un '.' est préfixé aux noms des fichiers d'échange situés dans le
même répertoire que le fichier original. Cela évite que les fichiers
d'échange ne soient visibles quand vous listez un répertoire.
- Sous MS-DOS, lorsque l'option 'shortname' est activée, tout '.' dans le nom
de fichier original est remplacé par '_'.
- Si ce fichier existe déjà (p. ex., lorsque vous êtes en train de recouvrer),
un avertissement est émis et une autre extension est utilisée : ".swo",
".swn", etc.
- Un fichier existant ne sera jamais écrasé.
- Le fichier d'échange est supprimé dès que Vim cesse d'éditer le fichier.
Détails techniques :
Le remplacement de '.' par '_' est effectué afin d'éviter les
problèmes avec les systèmes de fichiers compatibles MS-DOS (crossdos
ou multidos, p. ex.). Si Vim est capable de détecter que le fichier
est sur un système de fichiers MS-DOS ou apparenté, un drapeau est
positionné qui a le même effet que l'option 'shortname'. Ce drapeau
est désactivé lorsque vous débutez l'édition d'un autre fichier.
*E326*
Si le nom de fichier en ".swp" existe déjà, le dernier caractère est
décrémenté jusqu'à ce qu'il n'y ait plus de fichier portant ce nom ou
que ".saa" soit atteint. Dans ce dernier cas, le fichier d'échange ne
sera pas créé.
En fixant l'option 'directory', vous pouvez placer le fichier d'échange dans
un autre répertoire que celui du fichier édité.
Avantages :
- Vous ne polluerez pas vos répertoires avec des fichiers ".swp".
- Si le répertoire de 'directory' est situé sur une partition différente, le
risque d'endommager le système de fichiers où se trouve le fichier édité est
réduit (lors d'un plantage).
Inconvénients :
- Vous risquez des conflits nominaux entre des fichiers de même nom mais
situés dans des répertoires différents (bien que Vim essaie d'éviter cela en
comparant les noms de chemins). Cela produira un message d'avertissement
ATTENTION erroné.
- Si vous utilisez votre répertoire personnel et que quelqu'un d'autre essaie
d'éditer le même fichier que vous, il ne verra pas votre fichier d'échange
et n'obtiendra pas de message d'avertissement ATTENTION.
Sur Amiga, vous pouvez en outre utiliser un disque en mémoire recouvrable
["recoverable ram disk"] XXX, mais le résultat n'est pas garanti à 100 %.
Mettre vos fichiers d'échange sur des disques en mémoire normaux (comme RAM:
sur Amiga) ou à des endroits qui sont purgés lors d'un redémarrage (comme /tmp
sous Unix) n'a pas beaucoup de sens, car vous les perdriez après un plantage.
Si vous voulez mettre vos fichiers d'échange dans un endroit fixe, placez une
commande comme l'une des suivantes dans votre fichier vimrc :C'est également très commode lors de l'édition de fichiers sur disquettes.
Mais vous devrez bien sûr créer ce répertoire "tmp" pour que ça marche !
Pour les fichiers en lecture seule, aucun fichier d'échange n'est utilisé (à
moins que le fichier ne soit lourd, faisant que l'espace mémoire à utiliser
dépasse celui fixé par 'maxmem' ou 'maxmemtot'). Mais si vous faites un
changement dans un fichier en lecture seule, un fichier d'échange sera quand
même créé.
L'option 'swapfile' peut être désactivée afin d'annuler la création d'un
fichier d'échange.
DÉTECTER UN FICHIER D'ÉCHANGE EXISTANT
Sur ce point, se reporter au Manuel de l'utilisateur, section |11.3|.
METTRE À JOUR LE FICHIER D'ÉCHANGE
Le fichier d'échange est mis à jour après la saisie de 200 caractères ou si
vous n'avez rien tapé pendant quatre secondes. Cela survient uniquement si le
tampon a été modifié, pas si vous vous êtes seulement déplacé dans le texte.
Si le fichier d'échange n'est pas mis à jour en permanence, c'est que cela
ralentirait trop le travail normal. Vous pouvez modifier cette quantité de 200
caractères via l'option 'updatecount'. Le délai de mise à jour peut être fixé
avec 'updatetime' (en millisecondes).
Après l'écriture dans le fichier d'échange, Vim synchronise le fichier sur
le disque. Cela peut prendre du temps, en particulier sur des systèmes Unix
chargés. Si vous ne souhaitez pas cela, vous pouvez fixer l'option 'swapsync'
à une chaîne vide. Le risque de perdre des données est cependant accru. Sur
certains systèmes non-Unix (MS-DOS, Amiga), le fichier d'échange n'est pas
écrit du tout.
Vous pouvez empêcher l'écriture du fichier d'échange en fixant l'option
'updatecount' à 0. La même chose se produit si Vim est lancé avec l'option
"-n". Pour restaurer l'écriture du fichier d'échange, il suffit de fixer
l'option 'updatecount' à un nombre non-nul. Les fichiers d'échange seront
créés pour tous les tampons si vous faites cela. Mais en ramenant
'updatecount' à zéro, les fichiers d'échange existants ne seront pas
supprimés, seuls seront affectés les fichiers ouverts après cela.
Si vous voulez être sûrs que vos changements sont bien dans le fichier
d'échange, utilisez cette commande :
*:pre* *:preserve* *E313* *E314*
:pre[serve] Écrit tout le texte de tous les tampons dans le
fichier d'échange. Le fichier original n'est plus
nécessaire pour le recouvrement.
{Vi : sortie d'urgence}
Un fichier d'échange Vim peut être reconnu par ces six premiers caractères :
"b0VIM ". Ensuite vient le numéro de version, p. ex., "3.0".
==============================================================================
2. Recouvrement *recovery* *E308* *E311*
Les bases sur le recouvrement d'un fichier sont abordées dans le Manuel de
l'utilisateur |usr_11.txt|.
Une autre manière d'effectuer un recouvrement est de lancer Vim et d'utiliser
la commande ":recover". C'est pratique lorsque vous démarrez Vim et que vous
obtenez le message "ATTENTION: Found a swap file ...". Dans ce cas, une simple
commande ":recover" se charge du travail. Vous pouvez également donner le nom
du fichier ou du fichier d'échange à la commande de recouvrement :
*:rec* *:recover* *E305* *E306* *E307*
:rec[over] [fichier] Essaie de recouvrer [fichier] depuis le fichier
d'échange. Si [fichier] n'est pas précisé, le nom de
fichier du tampon courant est utilisé. Le contenu du
tampon courant est perdu. Cette commande échoue si le
tampon a été modifié.
:rec[over]! [fichier] Comme ":recover", mais toutes le modifications du
tampon seront perdues.
*E312* *E309* *E310*
Vim sait réagir avec discernement s'il trouve un fichier d'échange corrompu de
quelque façon. Si Vim a des doutes sur ce qu'il trouve, il émettra un message
d'erreur et insérera les lignes avec "???" dans le texte. Lorsque vous
observez ce message d'erreur pendant un recouvrement, recherchez "???" dans le
fichier pour voir ce qui est mauvais. Vous voudrez peut-être copier/coller
pour obtenir le texte que vous souhaitez.
Assurez-vous que le recouvrement s'est bien déroulé avant d'écraser le fichier
original ou de supprimer de fichier d'échange. C'est une bonne habitude
d'écrire le fichier à recouvrir dans un autre endroit et de lancer `diff` pour
repérer si les changements que vous souhaitez sont présent dans le fichier
recouvert.
Lorsque vous êtes sûr que le recouvrement s'est bien effectué, supprimez le
fichier d'échange. Sinon, vous continuerez de voir s'afficher des messages
d'avertissement vous prévenant qu'un fichier ".swp" existe déjà.
{Vi : le recouvrement s'effectue d'une autre façon, et un courriel est envoyé
s'il y a quelque chose à recouvrer}
vim:tw=78:ts=8:ft=help:norl: