Si vous avez déjà été enregistré par un fichier de sauvegarde Emacs, vous en voulez probablement plus, pas moins. Il est ennuyeux qu'ils se retrouvent dans le même répertoire que le fichier que vous modifiez, mais c'est facile à changer. Vous pouvez faire entrer tous les fichiers de sauvegarde dans un répertoire en mettant quelque chose comme ce qui suit dans votre
.emacs
.
(setq backup-directory-alist `(("." . "~/.saves")))
Il existe un certain nombre de détails obscurs associés à la façon dont Emacs peut créer vos fichiers de sauvegarde. Doit-il renommer l'original et écrire le tampon édité? Et si l'original est lié? En général, le pari le plus sûr mais le plus lent est de toujours faire des sauvegardes en copiant.
(setq backup-by-copying t)
Si c'est trop lent pour une raison quelconque, vous pouvez également y jeter un œil
backup-by-copying-when-linked
.
Étant donné que vos sauvegardes sont toutes à leur place maintenant, vous en voudrez peut-être plus, plutôt que moins. Jetez un œil à la documentation Emacs pour ces variables (avec C-h v
).
(setq delete-old-versions t
kept-new-versions 6
kept-old-versions 2
version-control t)
Enfin, si vous ne devez absolument pas avoir de fichiers de sauvegarde:
(setq make-backup-files nil)
Cela me rend malade d'y penser cependant.
Les fichiers de sauvegarde / sauvegarde automatique d'Emacs peuvent être très utiles. Mais ces caractéristiques prêtent à confusion.
Fichiers de sauvegarde
Les fichiers de sauvegarde ont des tildes (
~
ou~9~
) à la fin et doivent être écrits dans le répertoire personnel de l'utilisateur. Quandmake-backup-files
est non nul, Emacs crée automatiquement une sauvegarde du fichier d'origine la première fois que le fichier est enregistré à partir d'un tampon. Si vous modifiez un nouveau fichier, Emacs créera une sauvegarde la deuxième fois que vous enregistrerez le fichier.Peu importe le nombre de fois que vous enregistrez le fichier, la sauvegarde reste inchangée. Si vous tuez le tampon puis visitez à nouveau le fichier, ou la prochaine fois que vous démarrez une nouvelle session Emacs, un nouveau fichier de sauvegarde sera créé. La nouvelle sauvegarde reflète le contenu du fichier après sa réouverture ou au début des sessions d'édition. Mais une sauvegarde existante n'est plus jamais touchée. Par conséquent, je trouve utile de créer des sauvegardes numérotées (voir la configuration ci-dessous).
Pour créer explicitement des sauvegardes, utilisez
save-buffer
(C-x C-s
) avec des arguments de préfixe.diff-backup
etdired-diff-backup
compare un fichier avec sa sauvegarde ou vice versa. Mais il n'y a pas de fonction pour restaurer les fichiers de sauvegarde. Par exemple, sous Windows, pour restaurer un fichier de sauvegardeil doit être copié manuellement
Fichiers à sauvegarde automatique
Les fichiers à sauvegarde automatique utilisent des hachages (
#
) et doivent être écrits localement dans le répertoire du projet (avec les fichiers réels). La raison en est que les fichiers à sauvegarde automatique ne sont que des fichiers temporaires qu'Emacs crée jusqu'à ce qu'un fichier soit à nouveau enregistré (comme avec une obéissance pressée).C-x C-s
(save-buffer
) pour enregistrer un fichier, Emacs enregistre automatiquement les fichiers - en fonction du nombre de frappes (auto-save-interval
) ou lorsque vous arrêtez de taper (auto-save-timeout
).Lorsque l'utilisateur enregistre le fichier, la version enregistrée automatiquement est supprimée. Mais lorsque l'utilisateur quitte le fichier sans l'enregistrer, Emacs ou la session X se bloque, les fichiers enregistrés automatiquement existent toujours.
Utilisez
revert-buffer
ourecover-file
pour restaurer les fichiers à sauvegarde automatique. Notez qu'Emacs enregistre les sessions interrompues pour une récupération ultérieure dans des fichiers nommés ~ / .emacs.d / auto-save-list . Larecover-session
fonction utilisera ces informations.La méthode préférée pour récupérer à partir d'un fichier enregistré automatiquement est
M-x revert-buffer RET
. Emacs demandera soit "Le tampon a été enregistré automatiquement récemment. Rétablir à partir du fichier d'enregistrement automatique?" ou "Restaurer le tampon du fichier FILENAME?". Dans ce dernier cas, il n'y a pas de fichier d'enregistrement automatique. Par exemple, parce que vous avez enregistré avant de taper une autreauto-save-intervall
séquence de touches, auquel cas Emacs a supprimé le fichier d'enregistrement automatique.L'enregistrement automatique est aujourd'hui désactivé par défaut car il peut ralentir l'édition lorsqu'il est connecté à une machine lente et parce que de nombreux fichiers contiennent des données sensibles.
Configuration
Voici une configuration qui IMHO fonctionne le mieux:
Données sensibles
Un autre problème est que vous ne voulez pas que Emacs diffuse des copies de fichiers contenant des données sensibles. Utilisez ce mode fichier par fichier. Comme il s'agit d'un mode mineur, je l'ai renommé à mes fins
sensitive-minor-mode
.Pour l'activer pour tous les fichiers .vcf et .gpg , dans vos .emacs, utilisez quelque chose comme:
Alternativement, pour protéger uniquement certains fichiers, comme certains fichiers .txt , utilisez une ligne comme
dans le fichier.
la source
diff
il contient le fichier réel. Ensuite, lancez Emacs et découvrez par vous-même ce qui serevert-buffer
passe. Cela portera ses fruits rapidement en cas d'urgence.La réponse acceptée est bonne, mais elle peut être grandement améliorée en sauvegardant en outre chaque sauvegarde et en sauvegardant les fichiers versionnés .
Tout d'abord, les paramètres de base décrits dans la réponse acceptée :
Ensuite, sauvegardez également les fichiers versionnés, ce que Emacs ne fait pas par défaut (vous ne vous engagez pas à chaque sauvegarde, non?):
Enfin, faites une sauvegarde sur chaque sauvegarde, pas seulement la première. Nous réalisons deux types de sauvegardes:
sauvegardes par session: une fois lors de la première sauvegarde du tampon dans chaque session Emacs. Ceux-ci simulent le comportement de sauvegarde par défaut d'Emac.
sauvegardes par sauvegarde: une fois à chaque sauvegarde. Emacs ne fait pas cela par défaut, mais c'est très utile si vous laissez Emacs fonctionner pendant longtemps.
Les sauvegardes vont à différents endroits et Emacs crée automatiquement les répertoires de sauvegarde s'ils n'existent pas:
Je suis devenu très intéressé par ce sujet après avoir écrit
$<
au lieu de$@
dans monMakefile
, environ trois heures après mon précédent commit: PCe qui précède est basé sur une page Wiki Emacs que j'ai fortement éditée .
la source
setq
s en haut de ma réponse? Ce qui précède fonctionne pour moi dans Emacs 24.5.1.Une autre façon de configurer les options de sauvegarde est via l'interface de personnalisation. Entrer:
Et puis à l'
Customize group:
invite entrezbackup
.Si vous faites défiler vers le bas du tampon, vous verrez la liste des répertoires de sauvegarde . Cliquez sur Afficher la valeur et définissez la première entrée de la liste comme suit:
Vous pouvez également désactiver les sauvegardes de mon paramètre Créer des fichiers de sauvegarde sur
off
.Si vous ne voulez pas qu'Emacs édite automatiquement votre
.emacs
fichier, vous voudrez créer un fichier de personnalisation .la source
customize-group
2 ans. Je vous remercie!Vous pouvez les désactiver complètement en
la source