354

Emacs はfoo~どこにでも名前が付けられたバックアップ ファイルを置きますが、私はそれらを削除するのを忘れないようにしたくありません。また、ファイル システムの別の場所にハード リンクがあるファイルを編集すると、編集が終了したときにハード リンクがバックアップを指し示すことになります。これらのバックアップ ファイルを削除するか、同じディレクトリ以外の場所に移動するにはどうすればよいですか?

4

5 に答える 5

564

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)

とはいえ、それを考えるとうんざりします。

于 2008-09-30T06:15:25.427 に答える
71

受け入れられた答えは良いですが、保存するたびに追加でバックアップし、 バージョン管理されたファイルをバックアップすることで大幅に改善できます。

まず、受け入れられた回答に記載されている基本設定:

(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 種類のバックアップを作成します。

  1. セッションごとのバックアップ:各 Emacs セッションでのバッファーの最初の保存時に 1 回。これらは、Emac のデフォルトのバックアップ動作をシミュレートします。

  2. 保存ごとのバックアップ: 保存ごとに 1。Emacs はデフォルトではこれを行いませんが、Emacs を長時間実行したままにしておくと非常に便利です。

バックアップは別の場所に保存され、バックアップ ディレクトリが存在しない場合は Emacs が自動的に作成します。

;; 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

上記は、私が大幅に編集した Emacs Wiki ページに基づいています。

于 2013-12-29T11:22:45.143 に答える
32

あなたはそれらを完全に無効にすることができます

(setq make-backup-files nil)
于 2009-01-21T21:24:48.493 に答える
32

バックアップ オプションを構成する別の方法は、カスタマイズ インターフェイスを使用することです。入る:

M-x customize-group

次に、Customize group:プロンプトで と入力しますbackup

バッファの一番下までスクロールすると、Backup Directory Alistが表示されます。[値の表示] をクリックし、リストの最初のエントリを次のように設定します。

Regexp matching filename: .*
Backup directory name: /path/to/your/backup/dir

または、バックアップをオフにすることもできます 私の設定Make Backup Files to off.

.emacsEmacs にファイルを自動的に編集させたくない場合は、カスタマイズ ファイルを設定する必要があります。

于 2008-09-30T08:14:27.683 に答える