Emacs Backup / Auto-Save-Dateien können sehr hilfreich sein. Diese Funktionen sind jedoch verwirrend.
Sicherungs-Dateien
Sicherungsdateien haben am Ende Tildes ( ~
oder ~9~
) und werden in das Home-Verzeichnis des Benutzers geschrieben. Wenn dies make-backup-files
nicht Null ist, erstellt Emacs beim ersten Speichern der Datei aus einem Puffer automatisch eine Sicherungskopie der Originaldatei. Wenn Sie eine neue Datei bearbeiten, erstellt Emacs beim zweiten Speichern der Datei ein Backup.
Unabhängig davon, wie oft Sie die Datei speichern, bleibt die Sicherung unverändert. Wenn Sie den Puffer beenden und die Datei dann erneut aufrufen oder das nächste Mal eine neue Emacs-Sitzung starten, wird eine neue Sicherungsdatei erstellt. Die neue Sicherung spiegelt den Inhalt der Datei nach dem erneuten Öffnen oder zu Beginn der Bearbeitungssitzungen wider. Ein vorhandenes Backup wird jedoch nie wieder berührt. Daher finde ich es nützlich, nummerierte Backups zu erstellen (siehe Konfiguration unten).
Verwenden Sie zum expliziten Erstellen von Sicherungen save-buffer
( C-x C-s
) mit Präfixargumenten.
diff-backup
und dired-diff-backup
vergleicht eine Datei mit ihrer Sicherung oder umgekehrt. Es gibt jedoch keine Funktion zum Wiederherstellen von Sicherungsdateien. Zum Beispiel unter Windows, um eine Sicherungsdatei wiederherzustellen
C:\Users\USERNAME\.emacs.d\backups\!drive_c!Users!USERNAME!.emacs.el.~7~
es muss manuell kopiert werden als
C:\Users\USERNAME\.emacs.el
Dateien automatisch speichern
Beim automatischen Speichern von Dateien werden Hashmarks ( #
) verwendet, die lokal im Projektverzeichnis (zusammen mit den tatsächlichen Dateien) geschrieben werden sollen. Der Grund dafür ist, dass automatisch gespeicherte Dateien nur temporäre Dateien sind, die Emacs erstellt, bis eine Datei erneut gespeichert wird (wie bei schnellem Gehorsam).
- Bevor der Benutzer
C-x C-s
( save-buffer
) drückt , um eine Datei zu speichern, speichert Emacs Dateien automatisch - basierend auf dem Zählen der Tastenanschläge ( auto-save-interval
) oder wenn Sie aufhören zu tippen ( auto-save-timeout
).
- Emacs speichert auch automatisch, wenn es abstürzt, einschließlich des Beendens des Emacs-Jobs mit einem Shell-Befehl.
Wenn der Benutzer die Datei speichert, wird die automatisch gespeicherte Version gelöscht. Wenn der Benutzer die Datei jedoch beendet, ohne sie zu speichern, Emacs oder die X-Sitzung abstürzt, sind die automatisch gespeicherten Dateien weiterhin vorhanden.
Verwenden Sie revert-buffer
oder recover-file
, um automatisch gespeicherte Dateien wiederherzustellen. Beachten Sie, dass Emacs unterbrochene Sitzungen zur späteren Wiederherstellung in Dateien mit dem Namen ~ / .emacs.d / auto-save-list aufzeichnet . Die recover-session
Funktion verwendet diese Informationen.
Die bevorzugte Methode zur Wiederherstellung aus einer automatisch gespeicherten Datei ist M-x revert-buffer RET
. Emacs fragt entweder "Der Puffer wurde kürzlich automatisch gespeichert. Von der Datei zum automatischen Speichern zurücksetzen?" oder "Puffer aus Datei FILENAME zurücksetzen?". Im letzteren Fall gibt es keine automatisch gespeicherte Datei. Zum Beispiel, weil Sie vor dem Eingeben weiterer auto-save-intervall
Tastenanschläge gespeichert haben. In diesem Fall hat Emacs die Datei zum automatischen Speichern gelöscht.
Das automatische Speichern ist heutzutage standardmäßig deaktiviert, da es die Bearbeitung verlangsamen kann, wenn eine Verbindung zu einem langsamen Computer besteht, und weil viele Dateien vertrauliche Daten enthalten.
Aufbau
Hier ist eine Konfiguration, die meiner Meinung nach am besten funktioniert:
(defvar --backup-directory (concat user-emacs-directory "backups"))
(if (not (file-exists-p --backup-directory))
(make-directory --backup-directory t))
(setq backup-directory-alist `(("." . ,--backup-directory)))
(setq make-backup-files t ; backup of a file the first time it is saved.
backup-by-copying t ; don't clobber symlinks
version-control t ; version numbers for backup files
delete-old-versions t ; delete excess backup files silently
delete-by-moving-to-trash t
kept-old-versions 6 ; oldest versions to keep when a new numbered backup is made (default: 2)
kept-new-versions 9 ; newest versions to keep when a new numbered backup is made (default: 2)
auto-save-default t ; auto-save every buffer that visits a file
auto-save-timeout 20 ; number of seconds idle time before auto-save (default: 30)
auto-save-interval 200 ; number of keystrokes between auto-saves (default: 300)
)
Sensible Daten
Ein weiteres Problem ist, dass Emacs keine Kopien von Dateien mit vertraulichen Daten verbreiten soll. Verwenden Sie diesen Modus für jede Datei. Da dies ein kleiner Modus ist, habe ich ihn für meine Zwecke umbenannt sensitive-minor-mode
.
Um es für alle .vcf- und .gpg- Dateien zu aktivieren , verwenden Sie in Ihren .emacs Folgendes:
(setq auto-mode-alist
(append
(list
'("\\.\\(vcf\\|gpg\\)$" . sensitive-minor-mode)
)
auto-mode-alist))
Verwenden Sie alternativ eine Zeile wie , um nur einige Dateien zu schützen, z. B. einige TXT- Dateien
// -*-mode:asciidoc; mode:sensitive-minor; fill-column:132-*-
in der Datei.