Emacsのsuspend/resume

消えるEmacs

普段Windowsを使っていたら、ちょっとしたタイプミスの拍子に「アンドゥ!」と思った瞬間、無意識にCtrl+Zをタイプしてしまうことがある。ウィンドウ化していないコンソール状態のインターフェイスEmacsを使っていて、Ctrl+Zを押してしまうと突然コマンドラインに戻ってしまう。
これが何の確認もなくウィンドウが消えるので、何が起こったのか分からないと結構焦る。
そして、再びEmacsでそのファイルを開いてみて、保存しようとすると、ファイルがロックされているようなメッセージが表示されて、困惑する。

Emacsは、C-zでsuspendする

これは、Ctrl+Z、つまりC-zコマンドで、ロックし、suspend(休止)してしまった状態になっているのです。
この休止状態のEmacsは次のような手順で再開できます。

ジョブ関連操作

EmacsからC-zで休止し、コマンドラインに戻るとまずそのジョブ番号が表示される。

[1]+   Stopped     emacs ~/.bashrc

たとえば上記のような状態なら、ジョブ番号は[1]となる。
つまり、これをもう一度再開すれば先ほどの作業の続きを正しく行える。
ジョブ番号を指定してフォアグラウンドに戻すには次のようなコマンドをタイプする。

fg %1

これで大丈夫だ。
ちなみにサスペンドされているemacsが一つだけの場合は、次のようにタイプしても大丈夫。

%emacs

しかし、複数のemacsがsuspendされていると、OSがどのemacsをフォアグラウンドに持ってくるべきか分からずにエラーを示す。
この場合はjobsコマンドでジョブ番号を確かめた後、前述したジョブ番号で戻すしかない。

[root]> jobs
[1]-  Stopped   emacs ~/.bashrc
[2]+  Stopped   emacs /etc/passwd
[root]> %emacs
bash: fg: emacs: ambiguous job spec