回答:
Emacsのバックアップファイルで保存したことがある場合は、それらのファイルを少なくするのではなく、より多く必要とするでしょう。編集中のファイルと同じディレクトリに移動するのは面倒ですが、簡単に変更できます。次のようなものをに置くことで、すべてのバックアップファイルをディレクトリに入れることができます
.emacs
。
(setq backup-directory-alist `(("." . "~/.saves")))
Emacsがバックアップファイルを作成する方法に関連する難解な詳細がいくつかあります。オリジナルの名前を変更し、編集したバッファを書き出す必要がありますか?オリジナルがリンクされている場合はどうなりますか?一般に、最も安全ですが最も遅い方法は、常にコピーしてバックアップを作成することです。
(setq backup-by-copying t)
何らかの理由でそれが遅すぎる場合は、も参照してください
backup-by-copying-when-linked
。
現在、バックアップはすべて独自の場所にあるため、バックアップの数を減らすのではなく、増やしたい場合があります。これらの変数については、Emacsのドキュメントをご覧ください(C-h v
)。
(setq delete-old-versions t
kept-new-versions 6
kept-old-versions 2
version-control t)
最後に、絶対にバックアップファイルを用意する必要がない場合:
(setq make-backup-files nil)
でもそれを考えるとうんざりします。
Emacsのバックアップ/自動保存ファイルは非常に役立ちます。しかし、これらの機能は混乱しています。
バックアップファイル
バックアップファイルの最後にはチルダ(~
または~9~
)があり、ユーザーのホームディレクトリに書き込まれます。make-backup-files
が非nilの場合、Emacsは最初にファイルがバッファーから保存されるときに、元のファイルのバックアップを自動的に作成します。新しいファイルを編集している場合、Emacsはファイルを2回保存したときにバックアップを作成します。
ファイルを何度保存しても、バックアップは変更されません。バッファを削除してからファイルに再度アクセスした場合、または次回新しいEmacsセッションを開始したときに、新しいバックアップファイルが作成されます。新しいバックアップには、再び開いた後、または編集セッションの開始時にファイルの内容が反映されます。ただし、既存のバックアップに再度触れることはありません。したがって、番号付きバックアップを作成すると便利です(以下の構成を参照)。
バックアップを作成するには、プレフィックス引数を指定してsave-buffer
(C-x C-s
)を明示的に使用します。
diff-backup
dired-diff-backup
ファイルをそのバックアップと比較したり、その逆を行います。ただし、バックアップファイルを復元する機能はありません。たとえば、Windowsでバックアップファイルを復元するには
C:\Users\USERNAME\.emacs.d\backups\!drive_c!Users!USERNAME!.emacs.el.~7~
手動でコピーする必要があります
C:\Users\USERNAME\.emacs.el
ファイルを自動保存
自動保存ファイルはハッシュマーク(#
)を使用し、プロジェクトディレクトリ内でローカルに書き込まれます(実際のファイルとともに)。その理由は、自動保存ファイルは、ファイルが再び保存されるまで(急いで従う場合など)、Emacsが作成する単なる一時ファイルであるためです。
C-x C-s
(save-buffer
)を押してファイルを保存する前Emacsはファイルを自動保存します-キーストロークのカウントに基づいて(auto-save-interval
)、または入力を停止したとき(auto-save-timeout
)。ユーザーがファイルを保存すると、自動保存されたバージョンが削除されます。しかし、ユーザーがファイルを保存せずに終了すると、EmacsまたはXセッションがクラッシュし、自動保存されたファイルがまだ存在します。
revert-buffer
またはrecover-file
を使用して、自動保存ファイルを復元します。Emacsは、中断されたセッションを後でリカバリするために〜/ .emacs.d / auto-save-listという名前のファイルに記録することに注意してください。recover-session
関数は、この情報を使用します。
自動保存されたファイルから回復するための推奨される方法はM-x revert-buffer RET
です。Emacsは「バッファは最近自動保存されました。自動保存ファイルから戻しますか?」または「ファイルFILENAMEからバッファを元に戻しますか?」後者の場合、自動保存ファイルはありません。たとえば、別のauto-save-intervall
キーストロークを入力する前に保存したため、その場合Emacsは自動保存ファイルを削除しました。
自動保存は現在、デフォルトで無効になっています。低速のマシンに接続すると編集が遅くなる可能性があり、多くのファイルには機密データが含まれているためです。
構成
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)
)
機密データ
もう1つの問題は、Emacsに機密データを含むファイルのコピーを配布させたくないということです。このモードはファイルごとに使用します。これはマイナーモードなので、私の目的のために名前を変更しましたsensitive-minor-mode
。
すべての.vcfおよび.gpgファイルに対してそれを有効にするには、.emacsで次のようなものを使用します。
(setq auto-mode-alist
(append
(list
'("\\.\\(vcf\\|gpg\\)$" . sensitive-minor-mode)
)
auto-mode-alist))
または、一部の.txtファイルなどの一部のファイルのみを保護するには、次のような行を使用します。
// -*-mode:asciidoc; mode:sensitive-minor; fill-column:132-*-
ファイル内。
diff
場合は、実際のファイルと一緒に保存します。次に、Emacsを起動して、自分で何revert-buffer
ができるかを調べます。これは緊急の場合にすぐに報われます。
受け入れ答えは良いですが、それは非常に別途ことによって改善することができる上、バックアップ のすべての保存とバックアップバージョン管理ファイルを。
まず、受け入れられた回答に記載されている基本設定:
(setq version-control t ;; Use version numbers for backups.
kept-new-versions 10 ;; Number of newest versions to keep.
kept-old-versions 0 ;; Number of oldest versions to keep.
delete-old-versions t ;; Don't ask to delete excess backup versions.
backup-by-copying t) ;; Copy all files, don't rename them.
次に、バージョン管理されたファイルもバックアップします。Emacsはデフォルトではこれを行いません(保存するたびにコミットするわけではありませんよね?):
(setq vc-make-backup-files t)
最後に、最初の保存だけでなく、保存ごとにバックアップを作成します。2種類のバックアップを作成します。
セッションごとのバックアップ:各Emacsセッションでバッファの最初の保存時に1回。これらはEmacのデフォルトのバックアップ動作をシミュレートします。
ごとの保存・バックアップ:上の一回ごとに保存。Emacsはデフォルトではこれを行いませんが、Emacsを長時間実行したままにしておくと非常に便利です。
バックアップは別の場所に行くと、彼らが存在しない場合はEmacsが自動的にバックアップのdirsを作成します。
;; Default and per-save backups go here:
(setq backup-directory-alist '(("" . "~/.emacs.d/backup/per-save")))
(defun force-backup-of-buffer ()
;; Make a special "per session" backup at the first save of each
;; emacs session.
(when (not buffer-backed-up)
;; Override the default parameters for per-session backups.
(let ((backup-directory-alist '(("" . "~/.emacs.d/backup/per-session")))
(kept-new-versions 3))
(backup-buffer)))
;; Make a "per save" backup on each save. The first save results in
;; both a per-session and a per-save backup, to keep the numbering
;; of per-save backups consistent.
(let ((buffer-backed-up nil))
(backup-buffer)))
(add-hook 'before-save-hook 'force-backup-of-buffer)
以前のコミットから約3時間後、私のでは$<
なく、
$@
で書いた後、私はこのトピックに非常に興味を持ちましたMakefile
:P
上記は、私が大幅に編集したEmacs Wikiページに基づいています。
setq
ましたか?上記はEmacs 24.5.1で動作します。
バックアップオプションを設定する別の方法は、カスタマイズインターフェイスを使用することです。入る:
M-x customize-group
そしてCustomize group:
プロンプトでと入力しbackup
ます。
バッファの一番下までスクロールすると、バックアップディレクトリリストが表示されます。[ 値の表示]をクリックして、リストの最初のエントリを次のように設定します。
Regexp matching filename: .*
Backup directory name: /path/to/your/backup/dir
または、[ バックアップファイルを作成する]の設定からバックアップをオフにすることもできますoff
。
Emacsで.emacs
ファイルを自動的に編集したくない場合は、カスタマイズファイルを設定する必要があります。
customize-group
2年くらい前に知っていたらよかったのに。ありがとうございました!
あなたはそれらを完全に無効にすることができます
(setq make-backup-files nil)