回答:
はい。
実行方法は、実行しているOSとemacs(XEmacs、GNU emacs)のバージョンによって異なります。始めるのに適した場所は、GnuClientとEmacsClientを調べることです。
[rant]これは非常に簡単で、他の多くのエディターでデフォルトで有効になっている機能ですが、Emacsでは非常に難しいことがわかります。[/ rant]
とにかく、ここに私がそれをした方法があります。まず、jwernernyが述べたように、EmacsClientがそのトリックを行います。foo.txtを編集するために必要なことは
emacsclient --alternate-editor='' foo.txt
このコマンドは、実行中のEmacsサーバーへの接続を試みます。サーバーがない場合は、サーバーを起動します。その後、サーバーに接続し、指定されたファイルを開くように指示します。
サーバーはデーモン(バックグラウンドプロセス)として実行されます。実行ps x | grep emacs
すると、コマンドラインでプロセスが表示されますemacs --daemon
。私が抱えていた問題は、Emacsがこのように実行された場合にのみ端末で実行されることでした。したがって、グラフィカルウィンドウで実行したい場合は、読み進めてください...
.bashrcに追加したものは次のとおりです。
alias e='emacsclient --no-wait --alternate-editor ~/.emacs.d/start.sh'
の内容は次の~/.emacs.d/start.sh
とおりです。
#!/bin/sh
emacs --eval '(server-start)' $* &
e
エイリアスは、次に、(サーバとの)新鮮なEmacsのインスタンスを起動する、または既存のものを使用することによってのいずれかで、ファイルを開くために使用することができます。
ファイルの処理が完了するまで待機するエディターコマンドの場合(Gitのコミットなどに適しています)、--no-wait
オプションを削除します。私はこれを私の.bashrcで行います:
export EDITOR='emacsclient --alternate-editor ~/.emacs.d/start.sh'
C-x #
ファイルの編集が完了したら使用します。古き良き人C-x k
は、「Buffer foo.txtにはまだクライアントがいます。それを殺しますか?」