ほとんどのオペレーティングシステムでは、ファイルを書き換えるとファイルに入っていたそれまでの記録は、自動的に破棄されます。したがって、Emacsでファイルを保存すると、ファイルの古い内容は捨てられます。しかし実際に保存する前に、Emacsが慎重に古い内容をバックアップ(backup)ファイルと呼ばれる別のファイルにコピーすれば、古い内容は失われません。
Emacsは最初にファイルをvisitしているバッファーからファイルに保存されたときだけ、バックアップファイルを作成します。その後ファイルを何回保存しようと、バックアップは変更されません。しかしバッファーをkillしてから、そのファイルを再びvisitすると、新しいバックアップファイルが作成されます。
ほとんどのファイルにたいして、変数make-backup-files
はバックアップファイルを作るかを決定します。ほとんどのオペレーティングシステムでは、デフォルト値はt
なので、Emacsはバックアップファイルを書き込みます。
バージョンコントロールシステム(version control system: バージョンコントロールを参照してください)で管理されているファイルにたいして、バックアップファイルを作るかは、変数vc-make-backup-files
により決定されます。バージョンコントロールシステムに以前のバージョンがある場合、バックアップファイルを作るのは不必要なので、デフォルト値はnil
です。
一般的なオプションを参照してください。
選択できるオプションは、Emacsにファイルごとに1つのバックアップを作らせる方法と、編集するファイルごとに番号がついた、一連のファイルを作る方法があります。単一または番号つきバックアップを参照してください。
変数backup-enable-predicate
のデフォルト値は、一時的なファイルのために使われるディレクトリー(変数temporary-file-directory
またはsmall-temporary-file-directory
で指定されます)のファイルは、バックアップしないような値になっています。
前に保存されたバッファーにたいしても、バッファーから他のバックアップファイルを作るよう、Emacsに明示的に指示することができます。バッファーをC-u C-x C-sで保存すると、この保存したバージョンが、次にバックアップするときのバックアップになります。C-u C-u C-x C-sはバッファーを保存しますが、最初に元のファイル内容を新しいバックアップファイルとします。C-u C-u C-u C-x C-sは両方を行います。まず前の内容でバックアップを作成し、次回に保存したときは、今回保存したものをバックアップにします。
変数backup-directory-alist
をカスタマイズして、指定したパターンにマッチする特定のファイルにたいして、指定したディレクトリーにバックアップを作成させることができます。典型的な使い方は、要素("."
.
dir)
を追加することにより、すべてのバックアップを絶対パスdirに作る方法です。異なるディレクトリーにある同じ名前のファイルによる、バックアップファイルの名前の衝突を避けるため、Emacsはバックアップファイルの名前を変更します。("."
.
".~")
を追加すると、これは元のファイルがあるディレクトリーに、非表示の.~というディレクトリーを作って、そこにバックアップを作成します。Emacsはバックアップを作るため、必要ならディレクトリーを作成します。