私はWindows上でCygwinとEmacsをガリガリ使っているひとですが、悩みは

起動が遅いことヽ(`Д´)ノ

である。cygwinの起動は10秒くらい、emacsも5秒くらいかかり、イライラする。

そこで、そんなストレス社会を薬物に頼らずに乗り切るために、起動高速化のための方法を調べてみたので、まとめてメモしておく。

Cygwin起動高速化の方法(/etc/bash_completion)

私はCygtermでCygwinを起動している。起動時にcygwinはいろいろな設定をしているのだが、特に時間がかかる原因が

/etc/bash_completion

の読み込みらしい。なので、この/etc/bash_completionを読み込まないように設定する。行頭にreturnを挿入することで解決。

以下の記事が参考になった。

Cygwin 1.7 の起動が遅い@ Windows 7 x64 | Mazn.net

# この項は今後も調べたら追加するかも。。

Emacs起動高速化の方法(emacsclient)

次に、emacsの起動。

Emacsは起動時にいろいろな設定ファイルを開くので、時間がかかるのは仕方がないEmacsは一度立ち上げたらめったに落とすものではないのだ。それが正しい使い方なのである。

しかし、簡単な設定ファイルを開こうとする度に5秒待たされたのでは溜まったものではない。そんなときに役に立つのが、EmacsServerとEmacsClientだ。

EmacsServerを立ちあげると、以後にemacsで編集をするときは、emacsClientからServerに通信してすでに開いているEmacs上で編集することがデキる。つまり、emacsを起動しなくても編集できる。

EmacsServerの立ちあげ

Emacsサーバを立ち上げるためには、Emacs上で

“M-x server-start”

と打ち込む。これだと、いちいちコマンドを打ち込まないといけないので、起動設定ファイルに以下を入力することで、起動時に自動でサーバを起動できる。

自分の場合は、$HOME/.emacs.d/init.el)に以下の設定を追加した。.emacsでもよい。自分の設定に合わせて。

; server start for emacs-client
(require 'server)
(unless (server-running-p)
  (server-start))

または、デーモンを起動しておけば、ウィンドウを閉じていてもバックグラウンドでサーバが立ち上がる。コマンドラインから以下のコマンドを叩く。

$ emacs -daemon

また、emacs daemonの終了は以下の通り

$ emacsclient -e ‘(kill-emacs)’

再起動も含め、シェルにしておくとよい。

EmacsClientで編集する

いつもは、emacsでファイルを編集しようとしていたものを、emacsclient.exeで編集する。

$ emacsclient .bashrc

Waiting for Emacs

これでサーバ上でファイルが編集できる。もっと便利にするためには、aliasを切るとよい。これもcygwin起動ファイルに以下を追加。(自分の場合は.bashrc)

alias emacs=“emacsclient.exe -nw”

デフォルトでemacsclientを使うように指定する。"-nw"オプションをつけることで、今開いているターミナル上でファイルが編集できる。閉じるときは"Ctrl + x + #“で。

参考:emacsclientを使おう - Life is very short

これで、ストレスにつぶれてこの世を呪うことなく生きることができる。