Emacs yedekleme / otomatik kaydetme dosyaları çok yardımcı olabilir. Ancak bu özellikler kafa karıştırıcı.
Yedekleme dosyaları
Yedekleme dosyalarının sonunda tild ( ~
veya ~9~
) vardır ve kullanıcının giriş dizinine yazılır. Ne zaman make-backup-files
olmayan nil Emacs otomatik orijinal dosya dosya bir tampon kaydedilen ilk kez bir yedeğini oluşturur. Yeni bir dosya düzenliyorsanız, dosyayı ikinci kez kaydettiğinizde Emacs yedek oluşturur.
Dosyayı kaç kez kaydettiğiniz önemli değil, yedekleme değişmeden kalır. Arabelleği öldürüp dosyayı yeniden ziyaret ederseniz veya bir sonraki Emacs oturumu başlattığınızda yeni bir yedekleme dosyası oluşturulur. Yeni yedekleme, yeniden açıldıktan sonra veya oturumların başlangıcında dosyanın içeriğini yansıtır. Ancak mevcut bir yedeklemeye bir daha asla dokunulmaz. Bu nedenle numaralandırılmış yedeklemeler oluşturmayı yararlı buluyorum (aşağıdaki yapılandırmaya bakın).
Yedek oluşturmak için önek bağımsız değişkenleriyle açıkça save-buffer
( C-x C-s
) kullanın .
diff-backup
ve dired-diff-backup
bir dosyayı yedeklemesiyle veya tam tersini karşılaştırır. Ancak yedekleme dosyalarını geri yükleme işlevi yoktur. Örneğin, Windows altında, bir yedekleme dosyasını geri yüklemek için
C:\Users\USERNAME\.emacs.d\backups\!drive_c!Users!USERNAME!.emacs.el.~7~
manuel olarak kopyalanmalıdır
C:\Users\USERNAME\.emacs.el
Dosyaları otomatik kaydet
Dosyaları otomatik kaydetme hashmarks ( #
) kullanır ve proje dizininde yerel olarak yazılır (gerçek dosyalarla birlikte). Bunun nedeni, otomatik kaydetme dosyalarının Emacs'ın bir dosya tekrar kaydedilinceye kadar oluşturduğu geçici dosyalar olmasıdır (itaat etmek gibi).
- Kullanıcı bir dosyayı kaydetmek için
C-x C-s
( save-buffer
) düğmesine basmadan önce Emacs, tuş vuruşlarını ( auto-save-interval
) saymaya dayalı olarak veya ( auto-save-timeout
) yazmayı bıraktığınızda dosyaları otomatik olarak kaydeder .
- Emacs ayrıca, çöktüğünde otomatik olarak kaydeder; Emacs işini bir kabuk komutuyla öldürmek de dahil.
Kullanıcı dosyayı kaydettiğinde, otomatik kaydedilen sürüm silinir. Ancak kullanıcı dosyayı kaydetmeden çıktığında, Emacs veya X oturumu çöküyorsa, otomatik kaydedilen dosyalar hala var olur.
Otomatik kaydetme dosyalarını geri yüklemek için revert-buffer
veya recover-file
düğmesini kullanın . Emacs'ın ~ / .emacs.d / auto-save-list adlı dosyalarda daha sonra kurtarma için kesilen oturumları kaydettiğini unutmayın . recover-session
Fonksiyon bu bilgileri kullanacağız.
Otomatik kaydedilen bir dosyadan kurtarmak için tercih edilen yöntemdir M-x revert-buffer RET
. Emacs, "Arabellek yakın zamanda otomatik olarak kaydedildi. Otomatik kaydetme dosyasından geri dönülsün mü?" veya "FILENAME dosyasından arabelleği geri al?". İkincisi durumunda otomatik kaydetme dosyası yoktur. Örneğin, başka bir auto-save-intervall
tuş vuruşu yazmadan önce kaydettiğiniz için Emacs otomatik kaydetme dosyasını silmişti.
Otomatik kaydetme günümüzde varsayılan olarak devre dışıdır, çünkü yavaş bir makineye bağlandığında düzenlemeyi yavaşlatabilir ve birçok dosya hassas veriler içerdiğinden.
Yapılandırma
IMHO'nun en iyi çalıştığı yapılandırma:
(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)
)
Hassas veri
Başka bir sorun, Emacs'ın hassas veriler içeren dosyaların kopyalarını yaymasını istememenizdir. Bu modu dosya başına kullanın . Bu küçük bir mod olduğu için, amaçlarım için yeniden adlandırdım sensitive-minor-mode
.
Tüm .vcf ve .gpg dosyaları için etkinleştirmek üzere .emacs dosyasında şöyle bir şey kullanın:
(setq auto-mode-alist
(append
(list
'("\\.\\(vcf\\|gpg\\)$" . sensitive-minor-mode)
)
auto-mode-alist))
Alternatif olarak, yalnızca .txt dosyaları gibi yalnızca bazı dosyaları korumak için,
// -*-mode:asciidoc; mode:sensitive-minor; fill-column:132-*-
dosyanın içinde.