回答:
に設定VISUAL
しますemacsclient -c
(またはなしの他のバリエーション-n
)。
このオプション-n
はemacsclient
、実行中のEmacsインスタンスに連絡してファイルを編集するように指示するとすぐに戻ります。エディターを呼び出すプログラム(ここではzshですが、これはを呼び出す他のプログラムにも同様に当てはまります$VISUAL
)は、呼び出したプログラムが終了したため、編集が終了したことを認識しています-n
。
VISUAL
Emacsでバッファを閉じたときなど、編集が終了したときに終了するように呼び出されるプログラムを調整する必要があります。それはまさにそれが何emacsclient
も-n
ないことです。それは実行中のEmacsインスタンスに連絡してファイルを開くように指示し、次にEmacsが返信して編集セッションが終了したことをemacsclientに伝えるまで待機します。編集セッションを終了する通常の方法は、C-x #
(server-edit
)を押すことです。これはemacsclientに通知し、バッファと、それがによって開かれたときのフレームを閉じますemacsclient -c
。バッファーを閉じると、セッションが終了したことがemacsclientプロセスに通知されますが、警告プロンプトが表示されます(「バッファー…まだクライアントがあります、それを強制終了しますか?」server-kill-buffer-query-function
)。によって開かれたフレームでemacsclient -c
、C-x C-c
(save-buffers-kill-terminal
)を押すとファイルが保存され、ファイルが閉じてフレームが閉じます。
-n
ですが、フラグの用途は何ですか?
emacs myfile &
場合、実行(または同等のWindows)して、Emacsプロセスを真っ暗に置きます。emacsclientを使用すると、を実行できますがemacsclient myfile &
、それだけでemacsclient
待機し、終了するだけのプロセスを持つプロセスが残ります。代わりに私はを実行するemacsclient -n myfile
ので、emacsclientプロセスはそれ自体で消えます。私はそれのためにシェル別名を持っている一般的なので、これがある:alias e='emacsclient -n'
emacsclient
ターミナルでしか実行していないことに気づきました。そのため、のポイントがわかりませんでした-n
。ありがとう
-n
また、emacsclientがgitのエディターとして機能するのを防ぎます。