emacsclient ¶の呼び出しemacsclient プログラムを使用する最も簡単な方法は、シェルコマンド
‘emacsclient file’ を実行することです。ここで file はファイル名です。これにより Emacs サーバーに接続し、その Emacs
プロセスに対して、既存のフレーム(グラフィカルフレーム、またはテキストターミナルのフレーム。フレームとグラフィカル表示 を参照)のいずれかで file
を表示するよう指示します。その後、そのフレームを選択して編集を開始できます。
Emacsサーバーが動作していない場合、emacsclientプログラムはエラーメッセージを表示して終了します(emacsclientの‘--alternate-editor=""’オプションを使用することでこれを防ぐことができます。emacsclient
オプションを参照してください)。Emacsプロセスに既存のフレームがない場合—デーモンとして起動した場合に起こり得ます(Emacsをサーバーとして使用するを参照してください——Emacsはemacsclientを呼び出したターミナル上にフレームを開きます。
また、‘-c’オプションを使用してグラフィカルディスプレイ上で、または‘-t’オプションを使用してテキストターミナル上で、emacsclientに新しいフレームを強制的に開かせることもできます。emacsclient
オプションを参照してください。Xフォワーディングを用いて‘-c’で複数のフレームを開く場合は、シングルキーボードモードを無効にしたい場合があります。複数ディスプレイを参照してください。
単一のテキスト端末で実行している場合、emacsclientのシェルとEmacsサーバーの切り替えは、次の2つの方法のいずれかで行えます。(i)
Emacsサーバーとemacsclientを別々の仮想端末で実行し、emacsclientを呼び出した後にEmacsサーバーの仮想端末に切り替える。あるいは(ii)
Emacsサーバー自体から、シェルモード(インタラクティブ・サブシェルを参照)またはTermモード(Termモードを参照)を用いてemacsclientを呼び出す。emacsclientはEmacs配下のサブシェルのみをブロックするため、引き続きEmacsでファイルを編集できます。
Emacsサーバーでfileの編集を終えたら、そのバッファにC-x
# (server-edit)と入力してください。これによりファイルが保存され、emacsclientプログラムに終了を促すメッセージが送信されます。EDITORを使用するプログラムは通常、エディタ(この場合はemacsclient)が終了するのを待ってから、別の処理を行います。
代わりに編集を中断したい場合は、M-x server-edit-abortコマンドを使用してください。これによりemacsclientプログラムにメッセージが送信され、異常終了ステータスで終了するよう指示されますが、バッファは保存されません。
また、emacsclient
を複数のファイル名引数とともに呼び出すこともできます。‘emacsclient file1 file2 ...’
を指定すると、Emacs サーバーは file1、file2
といった順にアクセスします。Emacs は file1
にアクセスしているバッファを選択し、その他のバッファはバッファリストの末尾に格納します(複数のバッファの使用 を参照)。emacsclient
プログラムは、指定されたすべてのファイルの処理が完了すると(すなわち、各サーバーバッファで C-x #
と入力した時点で)終了します。
サーバーバッファで終了する場合も、サーバーに作成を依頼する前にEmacsセッション内に既に存在していた場合を除き、バッファは破棄されます。ただし、server-kill-new-buffers を nil
に設定すると、別の判定基準が適用されます。サーバーバッファで終了する際、ファイル名が正規表現 server-temp-file-regexp
に一致する場合は、そのバッファが破棄されます。これは、特定の一時ファイルを区別するために設定されています。
各 C-x #
は、さまざまなファイルを編集するための他の保留中の外部リクエストを確認し、次に編集するファイルを選択します。必要に応じて手動でサーバーバッファに切り替えることもでき、必ずしも
C-x # でそこに至る必要はありません。ただし、emacsclient に終了を知らせるには C-x #
を使用します。
変数 server-window の値をウィンドウまたはフレームに設定すると、C-x # は常にそのウィンドウまたはフレームに次のサーバーバッファを表示します。
emacsclient
が接続されると、通常、サーバーはクライアントフレームからの終了方法を記したメッセージを出力します。server-client-instructions が nil に設定されている場合、このメッセージは出力されません。