「シングルトン」emacsインスタンスを使用できますか?


6

言い換えると、emacsを1回起動できますか。ターミナルでemacsを入力するたびに、既存のemacsインスタンスのバッファーとして開かれますか?

回答:



5

[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にはまだクライアントがいます。それを殺しますか?」


まさに私が必要なもの。Windowsにe.batがありますが、Linuxにもe.batがあります。
クリスチャンマドセン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.