emacsclientを使ってターミナルから既に起動中のEmacsでファイルを開く

Emacs上のターミナルを使わずに、Emacsとターミナルを別々に使っていると、Emacsとターミナル間の連携が取りにくい。
ターミナルのカレントディレクトリにあるファイルをEmacsで開こうと思ったときに、コマンドでemacsを実行すると新しいEmacsが起動するし、Emacsでいちいちfind-fileするのはめんどくさい。
emacsclientを使うと解決するらしいので、導入してみた。

設定

init.elに追記。

(require 'server)
(unless (server-running-p)
  (server-start))

動作

Emacsを起動しておいて、ターミナルから以下のように打つと、起動中のEmacsで編集できる。

$ emacsclient hogehoge -n

オプション-nをつけると、Emacsに編集の終了を告げる(C-x #)必要がなくなる。


エイリアスを設定しておくと便利(.zshrcの例)。

alias e="emacsclient -n"