Emacsでファイルの自動保存 (auto-save-buffers)

最終更新日: 2004-03-25 (公開日: 2003-07-16)


うっかりファイルの保存を忘れていたために、OSやアプリケーショ ンが突然落ちて何時間もの作業を失ったという経験のある人は多い。 うっかりと書いたが、これはうっかりしていた人間が悪いというよ り、作業内容を失ってしまう計算機の方が悪い話である。

こうした「ファイルの保存し忘れ問題」に備える現実的な対策は、 ファイルの保存をこまめに行う、という方法である。実際、多くの 人がこれを行っている。なんだかおかしな話だ。

Emacs にはバックアップを自動保存する機能が備わっているが、

といった問題があり、あまり信用できない。そこで、僕は 以前 からファイルを自動で保存するように Emacs の設定を行っている。 Emacs でファイルの自動設定を行うには、 山岡克美氏作 (に筆者がコードを加えた) の auto-save-buffers.el を、適切なディレクトリ (M-x describe-variable load-path で表示されるディレクトリのう ち site-lisp という文字列を含むディレクトリ。たとえば /usr/share/emacs/site-lisp。) にコピーし、 ~/.emacs に次の設定を加えればよい。

(require 'auto-save-buffers)
(run-with-idle-timer 0.5 t 'auto-save-buffers) 

上のように設定を加えると、キー操作が 0.5 秒ないときに更新の あったファイルがすべて自動的に保存されるようになる。この設定 を行ってから 2年以上の間、C-x C-s をまったく打たなくなった。

しかし、auto-save-buffers はたいへん便利であると主張しても、 大方の人は「今のままでいいや」 「まちがって修正してしまったのが、勝手に保存されるほうが嫌」 などと理由を挙げて、なかなか納得してくれない。 Emacsのマニュアル を見ても、同じようなことが書かれている。

自動セーブは通常は読み込んだファイル名でのセーブは行ないませ ん.これは予定の半分しか変更していないような中途半端なプログ ラムをセーブするのは望ましくないからです.その代わり,自動セー ブは自動セーブファイルと呼ばれる別のファイルに行なわれ,読み 込んだファイルは,陽にセーブした(C-x C-sなどで)場合のみ変更 されます.

この考え方は CVS などのバージョン管理システムが広く使われる ようになった現在では古くなっていると思う。きりのいいところで ファイルに保存するのではなく、きりのいいところでバージョン管 理システムに保存すればいい。

実際のところ、僕の場合は、auto-save-buffers を設定してから困っ たことはほとんどない。その反対に以前は、ファイルが自動保存さ れないために、編集内容を失ったり、コードは修正したものの保存 を忘れて「なんでバグが直らないんだ!」と混乱したりと、困った ことは何度もあった。誰もが auto-save-buffers に向いていると は言わないけど、興味のある人は試してもらえるとうれしい。これ に慣れると「ファイルの保存」を手動で行うなんてばかばかしいと 気づくはずである。

関連情報

更新履歴


Satoru Takabayashi