scramble cadenza

技術ネタのガラクタ置き場

emacs in terminal に移行しようと思ったけど、GUI の emacs に戻った話

イントロ

今まで GUIemacs を使ってたけど、terminal の中で emacs を開くようにして、暫く使ってみた。

要するに emacs -nw です。

けど色々難しいことがあって、元に戻ったという話。
苦労したところと、経緯を残します

環境

  • emacs 24.4
  • OSX 10.10.4
  • iterm2 2.1.1

なんで terminal の中で開きたいの?

カッコイイからです!
理由はなんとなく。

やったこと

特定のキーバインドemacs に渡らない

ターミナル上のEmacsで本来使えない"Ctrlキー+何か"を使う方法 - すぎゃーんメモ を見て解決。

これで C-:, C-;, C-y 等よく使うキーバインドを機能させることができた。

コピペができない

emacskill-ringclipboard の共有ができてなくて困った。
emacs でコピーした時に、pbcopy を呼ぶことで、無理やり同期させるような elisp を書いた。

Emacs と Mac のクリップボードを共有する と似たような感じ。

-nw にした時に同期できてないことに気づいたけど、特に GUI では意識してなかったポイント。

tmux prefix key と emacsキーバインドが競合する

私は tmux の prefix key として C-q を使っていたけど、emacsquoted-insert と競合する。
悩んだ末 quoted-insert の prefix を変更した。

emacsclient の起動

# emacs -nw
function emacs () {
  EMACS_CLIENT='/Applications/Emacs.app/Contents/MacOS/bin/emacsclient'
  EMACS='/Applications/Emacs.app/Contents/MacOS/Emacs'

  if ! pgrep Emacs; then
    $EMACS --daemon
  fi

  $EMACS_CLIENT -nw -q
}

function ekill () {
  pkill Emacs
}

この辺りはまだ泥臭くやってます。 emacs が立ち上がってなかったら、 --daemon 付きで起動し、その後 emacsclient を立ち上げる、というスクリプトを使って凌いでいる。

terminal の中で起動してよかった事

太字は特に良かった(悪かった)ところ

  • カッコ良くなった
  • emacsclient の起動がかなり早くなった
    • パッと開いて、パッと閉じる事が可能になって気持ちいい
  • いい感じに emacs で完結するようになった
    • 操作性うp
    • shell-command を以前より多用するようになった
      • だけどまだまだ shell 周りは課題が多い

よくなかったこと

  • 設定で無茶をしている
    • 特に「ターミナルから特定のキーバインドが渡らない」現象を解決するのに色々苦労した
    • この環境を再現するために、iterm2 の設定をいじらないといけなくて微妙な感じがする
  • コマンド + TAB で emacs に移れない
    • emacs で完結している限りは困らないけど、時々困る(かも)
  • color-theme が好みなやつがない
    • 自分の中でコレ!っていうのが無かった
    • GUI の時と、terminal の時で、色合いが結構違う
  • elscreen-server が地味に機能してない気がする件
    • 別の emacsclient を立ち上げても tab が共有されてない
    • 色々なところで emacsclient 立ち上げると頭使うから、こういう使い方をしたくなかった

結局どうなったか

GUI に戻りました...

自分は zshemacs を両方よく使っていたのと、zsh in emacs をイメージ通りに使えなかったのが大きかったです。
なので iterm2 (zsh 使う) と emacs スイッチを コマンド + TAB で行えないのが辛かった。

これがうまく機能しないと、効率が落ちてしまいます。

けどいつかは使いこなしたいこの環境、またいつか挑戦したいと思います。