Emacsをターミナル上でも動くようにした

今までEmacsはずっとGUIで使っていた。理由は以下のものがある。

  • 日本語IMEを有効にしていても便利に使える
  • TRAMPを使えばリモートのEmacs環境を整えなくても大丈夫
    • TRAMPを使えばリモートのファイルも手元のファイルも遜色なく扱える
    • backupファイルを必ずローカルに作るようにすれば、保存するときに遅いのを我慢すればいいだけ
  • 指定できるキーバインドが多い
    • ターミナルだと指定できないキーバインドが存在していて、そういうキーバインドを使っていた
    • iTerm2ならば無理矢理使う方法は存在する

memo.sugyan.com

しかし以下のデメリットがあり、悩まされていた。

  • TRAMPを考慮していないelispが多い
    • 特に補完系など
    • 自力で対応すればいいのだろうが、自分にそんな能力は無い
  • TRAMPが頻繁に固まる
    • tramp-cleanup-connection などを使って復帰する方法もあるが、たまにどうしようもなくなる

ということで、ターミナルでもGUIでも両方使えるように.emacsを変更した。以下に注意すべき点を書いておく。

  • キーバインドはターミナルでも使えるものに変更
    • C-は埋まっていたので、M-から始まるものにしたりした
  • 環境変数TERMscreen-256colorのような256色表示できるものに変更しておく
    • tmux.confset-option -g default-terminal "screen-256color"足すか、zshの設定に足すかどちらかをすればよい
  • iTerm2の設定でoptionキーをMETAとして使えるようにしておく
    • 元々コマンドキーを使っていたが、そういうことはできないので慣れる必要がある
  • フォントの指定はターミナル自体に設定する必要がある
    • 元々一致させていたので問題なかった

iTerm2でAltキーをMetaキーとして使う | rakkyooの備忘録

キーバインド変更など、それなりに痛みが伴う変更になったが、見た目もほとんど変わらないし、何とかなりそう。ただしターミナルからだと日本語を打つのがつらくなるので、GUIEmacsは普段のエディタ用(このエントリもGUIEmacsでほとんど書いた)で、ターミナル上のEmacsは開発専用という感じになりそう。開発用のEmacsはコメントくらいでしか日本語を使わないのでSKKを使おうとも考えたが、普段使っているATOKと比較すると圧倒的に入力速度が落ちるのでそれは辞めた。

またリモートのサーバーの設定をいじるのが面倒な場合や、時間が足りない(ISUCONなど)ようなケースではTRAMPは便利なので今後も普通に使っていくと思う。単純にメンテナンスすべき対象が増えた感じ。

普通にターミナルでも動くところが、最近はやりのエディタにはないEmacsのメリットなので、そのメリットを享受できないのはもったいない。今後はそのメリットを享受していこうと思う。