Shogo's Blog

Mar 5, 2013 - 1 minute read - emacs

出、出〜〜〜〜wwww emacsをふたつ以上実行奴〜〜〜〜www(emacsclient編)

emacsを使って編集している最中にシェル操作をしたくなって, C-z を押してバックグラウンドにしてシェル操作. その後,emacsに戻ってくるには fg コマンドを打つ必要があるんだけど, 間違えてもう一回 emacs を新しく立ち上げるというミスを何度もやってしまう・・・.

これに対し,猫型さんが複数起動しようとすると警告を出してくれるようにしてくれました. (出、出〜〜〜〜wwww emacsをふたつ以上実行奴〜〜〜〜www)

警告してくれるのはありがたいんだけど, これだとシェル操作中に別のファイルの編集をしたいと思っても,警告が返ってくるだけ. emacs をフォアグラウンドに出して,ファイルの指定をやり直さなきゃいけない. 僕はファイルの編集をしたいんだ!! わかったから早く編集させろ!!!

emacsclient

単なる警告じゃなくて, 「裏で動いていたemacsを復帰させ,新しいバッファを開く」 ところまで自動的にやってくれると嬉しいですね.

まず,emacs をデーモンモードで起動しておきます.

emacs --daemon

emacsclient コマンドでファイルを開くと, emacs デーモンさんが新しいバッファで開いてくれます. オプションに -nw を指定しておくと現在の端末で閲覧編集することができます.

emacsclient -nw hoge.txt

終了するにはC-x 5 0C-x C-cでも終了できるけど, デーモンにバッファが残ってしまうみたい.

aオプションでemacs デーモンが起動してないときに 編集に使うエディタを指定できる. 空っぽにしておくと,emacs をデーモンモードで起動してくれる.

emacsclient -nw -a '' hoge.txt

emacs デーモンを終了させるのは以下のコマンド.

emacsclient -e '(kill-emacs)'

emacsclient に対して alias を作っておけば, 複数起動かどうか意識せずに使えますね.

alias emacs='emacsclient -nw -a ""'

参考