Wenn Sie jemals von einer Emacs-Sicherungsdatei gespeichert wurden, möchten Sie wahrscheinlich mehr davon, nicht weniger. Es ist ärgerlich, dass sie sich im selben Verzeichnis befinden wie die Datei, die Sie bearbeiten, aber das ist leicht zu ändern. Sie können alle Sicherungsdateien in ein Verzeichnis verschieben, indem Sie Folgendes in Ihr Verzeichnis einfügen
.emacs
.
(setq backup-directory-alist `(("." . "~/.saves")))
Es gibt eine Reihe von geheimen Details darüber, wie Emacs Ihre Sicherungsdateien erstellen könnte. Sollte es das Original umbenennen und den bearbeiteten Puffer ausschreiben? Was ist, wenn das Original verlinkt ist? Im Allgemeinen ist es am sichersten, aber am langsamsten, immer Backups durch Kopieren zu erstellen.
(setq backup-by-copying t)
Wenn das aus irgendeinem Grund zu langsam ist, können Sie es sich auch ansehen
backup-by-copying-when-linked
.
Da sich Ihre Backups jetzt alle an ihrem eigenen Ort befinden, möchten Sie möglicherweise mehr davon als weniger. Schauen Sie sich die Emacs-Dokumentation für diese Variablen an (mit C-h v
).
(setq delete-old-versions t
kept-new-versions 6
kept-old-versions 2
version-control t)
Wenn Sie unbedingt keine Sicherungsdateien haben müssen:
(setq make-backup-files nil)
Es macht mich krank, daran zu denken.
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 diesmake-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
unddired-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 wiederherzustellenes muss manuell kopiert werden als
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).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
).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
oderrecover-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 . Dierecover-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 weitererauto-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:
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:
Verwenden Sie alternativ eine Zeile wie , um nur einige Dateien zu schützen, z. B. einige TXT- Dateien
in der Datei.
quelle
diff
diese mit der tatsächlichen Datei. Dann feuere Emacs ab und finde selbst heraus, was esrevert-buffer
tut. Dies zahlt sich im Notfall schnell aus.Die akzeptierte Antwort ist gut, kann jedoch durch zusätzliches Sichern bei jedem Speichern und Sichern versionierter Dateien erheblich verbessert werden .
Zunächst die Grundeinstellungen wie in der akzeptierten Antwort beschrieben :
Als nächstes sichern Sie auch versionierte Dateien, was Emacs nicht standardmäßig tut (Sie verpflichten sich nicht bei jedem Speichern, oder?):
Erstellen Sie schließlich bei jedem Speichern ein Backup, nicht nur beim ersten. Wir machen zwei Arten von Backups:
Sitzungssicherungen: Einmal beim ersten Speichern des Puffers in jeder Emacs-Sitzung. Diese simulieren das Standard-Backup-Verhalten von Emac.
Backups pro Speicher: einmal bei jedem Speichern. Emacs macht dies nicht standardmäßig, aber es ist sehr nützlich, wenn Sie Emacs für längere Zeit laufen lassen.
Die Backups werden an verschiedenen Orten abgelegt und Emacs erstellt die Backup-Verzeichnisse automatisch, wenn sie nicht vorhanden sind:
Ich interessierte mich sehr für dieses Thema, nachdem ich etwa drei Stunden nach meinem vorherigen Commit
$<
anstelle von$@
meinem geschriebenMakefile
hatte: P.Das Obige basiert auf einer Emacs-Wiki-Seite, die ich stark bearbeitet habe .
quelle
setq
s oben in meiner Antwort? Das obige funktioniert für mich in Emacs 24.5.1.Eine andere Möglichkeit zum Konfigurieren von Sicherungsoptionen ist die Benutzeroberfläche zum Anpassen. Eingeben:
Und dann an der
Customize group:
Eingabeaufforderung eingebenbackup
.Wenn Sie zum Ende des Puffers scrollen, wird Backup Directory Alist angezeigt . Klicken Sie auf Wert anzeigen und legen Sie den ersten Eintrag in der Liste wie folgt fest:
Alternativ können Sie schalten Sie Backups von meiner Einstellung Backup - Dateien Stellen zu
off
.Wenn Emacs Ihre
.emacs
Datei nicht automatisch bearbeiten soll , müssen Sie eine Anpassungsdatei einrichten .quelle
customize-group
2 Jahren gewusst . Vielen Dank!Sie können sie insgesamt deaktivieren, indem Sie
quelle