Emacsでファイルを自動保存する

Emacsにはファイルを自動で保存する機能があります。Emacsに標準でついている自動保存機能をさらに便利に拡張したプラグインもあるのでご紹介します。また、自動保存の魅力もお伝えしたいと思います。

Emacsの自動保存auto-save-mode

Emacsにはauto-save-modeというマイナーモードがデフォルトで有効になっています。auto-save-modeは、一定のタイミング、もしくは一定のキー無入力時間で自動的にファイルを保存します。自動保存とは言いますがauto-save-modeは編集中のファイルに上書き保存するわけではありません。編集のファイルとは別に、#で始まり#で終わるファイル名で自動保存されるのです。auto-save-modeによって保存された#バッファ名#形式のファイルは、現在編集中のバッファを保存することによって自動的に削除されます。

auto-save-modeを使うことによってOSやEmacsがクラッシュしても、編集中だったファイルを復元することができるのです。#バッファ名#形式のファイルが存在している元ファイルをEmacsで開こうとすると、リカバリーしてくださいといわれます。そこで、M-x recover-file RET ファイル名 RETと入力すると、リカバリーすることができます。リカバリーした直後ではまだファイルを保存されていませんので、問題ない場合は、C-x C-s でファイルを保存してください。

auto-saveの拡張auto-save-buffer

Emacs標準のauto-save-modeは突然のクラッシュに対応することができる非常に便利な機能ですが、いっそのこと自動で編集中のファイルを上書き保存してしまおうというプラグインをauto-save-buffersを作成した作者の方がいます。auto-save-buffersはauto-save-modeよりもデフォルトでさらに小まめにファイルを自動で上書き保存するマイナーモードです。

auto-save-buffers-modeを利用するためには、auto-save-buffers-mode.elを保存して読み込むだけで利用することができます。筆者が紹介するよりも、こちらのモードに関してはEmacsでファイルの自動保存 (auto-save-buffers)をご覧ください。

自動保存の魅力とデメリット

auto-save-modeはクラッシュに対応する便利な機能ですが、auto-save-modeの自動保存をやっかいに思い、利用していない方がたくさんいるそうです。自動保存がやっかいだと思う理由は、Emacsを意図的に強制終了してもそれが、クラッシュと判断されることや、動作が多少を遅くなることなどさまざまな理由があるそうです。

しかし、auto-save-modeを使った時の生じる煩わしさを想像してしまいがちですが、実際に使ってみると意外とたくさん助けられてるものです。例えば、Windows VistaでEmacs、もしくはMeadowを使っている方にとっては、auto-save-modeは必須のはずです。Vistaには自動スリープ機能がついており、長時間放置していると自動でスリープさせることができます。しかし、この動作は非常に不安定で、多ければ2回に1回はクラッシュしてしまう人もいると思います。auto-save-modeを利用することによって、ファイル編集の作業を気軽に中断して席をはずすことができるのです。

auto-save-buffersは自動で上書き保存をするプラグインですが、実際に使ったことが無い人にとっては抵抗を感じるかもしれません。たしかに、保存する予定の無いファイルを開き編集場面は存在します。しかし、そのような作業をする場合は、別のバッファ名を割り当てるか、ファイルをコピーしてから作業を行うべきです。

保存する気がなくても、C-x C-sを入力するクセで、ついつい保存してしまうかもしれません。また、保存する気がなくても、一応置いときたいと思うかもしれません。領域にある程度余裕がある場合は、コピーか別名で開くことをおすすめします。

上記のような手段をとる習慣がつけば、自動上書き保存を取り入れない理由はなくなったはずです。自動で上書き保存をすることによって、保存忘れに悩むことはありません。突然のクラッシュに悩む必要もなく、リカバリーの手間もいりません。さらに保存という概念がなくなれば、鉛筆と消しゴムと紙で文字を書くような感覚になり、より発想力を引き立ててくれるかもしれません。みなさんも自動保存を取り入れてみてはいかがでしょうか。