コマンドラインから既存のemacsプロセスでファイルを開く方法は?


13

特定のプロジェクトに関連するすべてのアプリとファイルを起動するスクリプトがいくつかあります。ただし、単に現在のemacsに要求されたファイルを開かせるのではなく、複数のemacsインスタンスを起動します。私はむしろ、現在のemacsが単にプロジェクトテキストファイルを新しいバッファーで開いただけです。

どうすればそれを行うことができますか?


私の答えを見てくださいstackoverflow.com/a/38655619/2450748 5年後:)
nexayq

回答:


20

M-x server-startEmacsセッション内で、emacsclient -n file1 file2 ...既存のEmacsにファイルを追加するために使用します。-c新しいウィンドウ(フレーム)でファイルを開くなど、使用する可能性のある追加オプションがあります。


どうもありがとう。それは私が知る必要があるものです。私はまだ「正しい答え」をチェックしていません。他の人に貢献する機会を与えるために、常に少し開いておくべきだと聞いたからです。しかし、私はすでにいくつかのスクリプトにあなたの答えを入れています。
ベブ

通常、(server-start)サーバーを手動で起動するのではなく、.emacsファイルに配置する必要があります。(and window-system (server-start))端末でemacsを実行している場合、サーバーの起動を回避するために使用します。
cjm

最新のEmacsでは、端末でも同じように便利です。-tオプションを参照してください。
ギーコサウルス

@cjm-.emacsファイルでサーバーを起動します。私はちょうどそれを使用しませんでした:
ベブ

5

ファイルを入れ(server-start)てください.emacs

これを追加 ~/.bashrc

alias myedit='emacsclient --alternate-editor="" --no-wait $*' #quotes intentionaly left blank

その後myedit、エディターとして使用します。-cオプションを使用してウィンドウを表示する必要があります。

だからあなたはこれを行うことができます:

myedit -c a-file
run-script #that uses myedit

または

run-script #that uses myedit
myedit -c

リチャード、ご意見ありがとうございます。私はまだあなたのスクリプトでいくつかのことを不可解にしています。まず、emacsclientには-cオプションがないため、これはbashのものであると想定していますが、わかりません。次に、代替エディターとしてemacsを使用してみませんか?ありがとう
11

#$ emacsclient --help ....次のオプションが受け入れられます。... -c、--create-frame現在のEmacsフレームを使用する代わりに新しいフレームを作成します... -a EDITOR、--alternate -editor = EDITORエディタEDITORがデーモンモードではEmacsを起動して、もう一度接続を試してみてください、空の文字列である場合は、サーバが実行されていない場合にフォールバックする
Ctrl + Alt + delor

エイリアスの定義で位置パラメータを使用する必要はありません(実際、おそらく望まないでしょう)。でどのようにalias foo='echo bar $*'展開するかを検討してくださいset quux; foo baz。あなたは位置パラメータを使用したい場合は、シェル関数としてそれを試してください:myedit() { emacsclient … "$@"; }
クリス・ヨンセン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.