File cadangan / penyimpanan otomatis Emacs bisa sangat membantu. Tetapi fitur-fitur ini membingungkan.
Cadangkan file
File cadangan memiliki tildes ( ~
atau ~9~
) di bagian akhir dan akan ditulis ke direktori home pengguna. Ketika make-backup-files
non-nil Emacs secara otomatis membuat cadangan dari file asli saat pertama kali file disimpan dari buffer. Jika Anda mengedit file baru, Emacs akan membuat cadangan saat Anda menyimpan file kedua kali.
Tidak peduli berapa kali Anda menyimpan file, cadangan tetap tidak berubah. Jika Anda membunuh buffer dan kemudian mengunjungi file lagi, atau waktu berikutnya Anda memulai sesi Emacs baru, file cadangan baru akan dibuat. Cadangan baru mencerminkan konten file setelah dibuka kembali, atau pada awal sesi pengeditan. Tetapi cadangan yang ada tidak pernah disentuh lagi. Karena itu saya merasa berguna untuk membuat cadangan bernomor (lihat konfigurasi di bawah).
Untuk membuat cadangan gunakan secara eksplisit save-buffer
( C-x C-s
) dengan argumen awalan.
diff-backup
dan dired-diff-backup
membandingkan file dengan cadangannya atau sebaliknya. Tetapi tidak ada fungsi untuk mengembalikan file cadangan. Misalnya, di bawah Windows, untuk mengembalikan file cadangan
C:\Users\USERNAME\.emacs.d\backups\!drive_c!Users!USERNAME!.emacs.el.~7~
itu harus disalin secara manual sebagai
C:\Users\USERNAME\.emacs.el
Simpan file secara otomatis
Simpan otomatis file menggunakan tanda pagar ( #
) dan akan ditulis secara lokal di dalam direktori proyek (bersama dengan file yang sebenarnya). Alasannya adalah bahwa file simpan otomatis hanya file sementara yang dibuat Emacs hingga file disimpan lagi (seperti dengan kepatuhan yang terburu-buru).
- Sebelum pengguna menekan
C-x C-s
( save-buffer
) untuk menyimpan file, Emacs menyimpan file secara otomatis - berdasarkan penghitungan penekanan tombol ( auto-save-interval
) atau ketika Anda berhenti mengetik ( auto-save-timeout
).
- Emacs juga menyimpan secara otomatis setiap kali crash, termasuk membunuh pekerjaan Emacs dengan perintah shell.
Saat pengguna menyimpan file, versi yang disimpan otomatis dihapus. Tetapi ketika pengguna keluar dari file tanpa menyimpannya, Emacs atau sesi X crash, file yang disimpan secara otomatis masih ada.
Gunakan revert-buffer
atau recover-file
untuk mengembalikan file simpan otomatis. Perhatikan bahwa catatan Emacs sesi terputus untuk pemulihan nanti dalam file bernama ~ / .emacs.d / auto-save-list . The recover-session
fungsi akan menggunakan informasi ini.
Metode yang disukai untuk memulihkan dari arsip yang disimpan secara otomatis adalah M-x revert-buffer RET
. Emacs akan bertanya, "Buffer telah disimpan otomatis baru-baru ini. Kembalikan dari simpan otomatis file?" atau "Kembalikan buffer dari file FILENAME?". Dalam hal yang terakhir tidak ada file simpan otomatis. Misalnya, karena Anda telah menyimpan sebelum mengetik auto-save-intervall
penekanan tombol lain , dalam hal ini Emacs telah menghapus file simpan otomatis.
Auto-save saat ini dinonaktifkan secara default karena dapat memperlambat pengeditan saat terhubung ke mesin yang lambat, dan karena banyak file berisi data sensitif.
Konfigurasi
Berikut adalah konfigurasi yang paling baik digunakan IMHO:
(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)
)
Data sensitif
Masalah lain adalah Anda tidak ingin Emacs menyebarkan salinan file dengan data sensitif. Gunakan mode ini berdasarkan per file. Karena ini adalah mode minor, untuk keperluan saya, saya menamainya kembali sensitive-minor-mode
.
Untuk mengaktifkannya untuk semua file .vcf dan .gpg , di .emac Anda gunakan sesuatu seperti:
(setq auto-mode-alist
(append
(list
'("\\.\\(vcf\\|gpg\\)$" . sensitive-minor-mode)
)
auto-mode-alist))
Atau, untuk melindungi hanya beberapa file, seperti beberapa file .txt , gunakan baris seperti
// -*-mode:asciidoc; mode:sensitive-minor; fill-column:132-*-
dalam file.