次: , 前: Entering Emacs, 上: Top


2.1 Emacsの終了

Emacsの抜け方には、休止(suspending)する、 終了(killing)するの2種類があるので、 Emacsを抜けるコマンドも2つあります。

休止(suspending)は、一時的にEmacsを止めて、 親プロセス(通常はシェル)に制御を戻します。 こうすると、同じバッファ、同じキルリング、同じアンドゥ履歴を保持したままの 同じEmacsジョブをあとで再開できます。 これが通常の抜け方 1です。

終了(killing)は、Emacsジョブの破壊を意味します。 あとでまたEmacsを起動できますが、新たなEmacs環境です。 終了したあとでは、同じ編集セッションを再開する方法はありません。

C-z
Emacsを休止する、あるいは、フレームをアイコン化する (iconify-or-deiconify-frame)。
C-x C-c
Emacsを終了する(save-buffers-kill-emacs)。

Emacsを休止するには、C-zsuspend-emacs)と打ちます。 すると、Emacsを起動したシェルに戻ります。 ほとんどの一般的なシェルでは、 シェルコマンド`%emacs'でEmacsを再開できます。

プログラムを休止できないシステムでは、 C-zは、端末と直接やりとりする下位シェルを起動します。 Emacsは、ユーザーがこのサブシェルから抜け出るまで待ちます。 (普通、C-dや`exit'でサブシェルを終了するはずだが、 使っているシェルに依存する。) このようなシステムでは、 Emacsを起動したシェルに(たとえばログアウトのために)戻るには、 Emacsを終了する以外に方法はありません。

プログラムを休止できるシステムであっても、 プログラムを休止できないシェル上で実行しているEmacsは休止できません。 このような場合、変数cannot-suspendnil以外の値を設定して、 C-zに下位シェルの実行を強制できます。 (適切なジョブ制御をできないEmacsの親シェルを 『下位』と呼ぶこともできるが、これは好みの問題。)

EmacsがXサーバーと直接通信して専用のXのウィンドウを作っている場合には、 C-zは別の意味になります。 専用のXのウィンドウを持つアプリケーションを休止しても、 あまり意味がありませんし、便利なわけでもありません。 そのかわり、C-zは、選択されているEmacsフレーム(see Frames)を 一時的に閉じるコマンドiconify-or-deiconify-frameを実行します。 シェルウィンドウに戻るには、ウィンドウマネージャの機能を使います。

Emacsを終了するには、C-x C-csave-buffers-kill-emacs)と打ちます。 これを2文字のキーにしてあるのは、少々打ちづらく2するためです。 このコマンドは、まず、変更したバッファを保存するかどうか聞いてきます。 未保存のものがあるとそれらを永久に失うことになるので、 Emacsを終了するまえにyesでの再確認を求めてきます。 Emacsを終了するとサブプロセスもただちに終了されられてしまうため、 サブプロセスが走っている場合にも、それらに関して確認を求めてきます。

一度Emacsを終了してしまうと、Emacsセッションを再開する方法はありません。 しかしながら、終了時に訪問していたファイルなどの 特定のセッション情報を記録するようにEmacsに指示しておけば、 つぎにEmacsを起動し直したときに、 同じファイルを訪問するなどを試みるようになります。 See Saving Emacs Sessions

オペレーティングシステムは、通常、実行中のプログラムを終了させたり 休止させたりする特定の特殊文字を監視しています。 Emacsを使っているときには、 オペレーティングシステムのこの機能はオフになっています 3 EmacsのキーとしてのC-zC-x C-cの意味は、 いくつかのオペレーティングシステムでプログラムを 休止させたり終了させたりするために用いる文字、 C-zC-cにヒントを得たものですが、 オペレーティングシステムとの関係はそれだけです。 これらのキーで好きなコマンドを実行するようにカスタマイズできます (see Keymaps)。


脚注

[1] 【訳注】これは、画面端末を使っている場合の話。

[2] 【訳注】 簡単に終了してしまっては、困るので。

[3] 【訳注】Emacsが専用のXのウィンドウを使っている場合は関係ない。