ですが、Emacsを超えるエディタがないので仕方ありません。
今回は開発の流れの中で、Emacsに関連する部分を抜き出して説明してみたいと思います。
最初に断っておきますが、この記事はEmacsを使っている人向けです。
C-fやC-bを見て「???」となる人は、以降を読んでも最後まで「???」だと思われます。
私の設定ファイル(.emacs.el)を公開します
折角なので、私の.emacs.elを公開します。https://gist.github.com/2637273ほぼどこかのコピペですが、ほぼどこからコピペしたのか分かりません。ごめんなさい。
この後の説明では、拡張の設定方法や、具体的にどのキーにどの拡張を割り当てて云々みたいな話は省かれることが多いので、不明点は直接.emacs.elを見て下さい。
ちょっと変えている部分や消している部分もありますが、ほとんど生の設定ファイルです。何か参考になれば。
まずanything-for-files
Emacsを立ち上げると、まずはC-x bを打ち込みます。この割り当てですが、私はanything-for-filesに割り当てています。
まさか素のままバッファの切り替えを使っている人がいるとは思えないので、C-x bにはiswitchbの割り当てをしている人が多いのでは、と思います。
ですが、Recentf(ファイルの使用履歴)があるanything-for-filesが便利すぎるので思い切って割り当ててます。Anything超絶便利。
Trampで開発
開発のやり方としては、Trampで開発サーバーに入って、その中身をゴリゴリ書き換えていきます。…なのですが、実はC-x bした時点で(今の私の場合は)勝手にTrampが走ります。
これはanything-for-filesを開いた時に、前回まで開発サーバーで作業していた履歴が残っているからです(たぶん)。
コマンド入力せずにTrampがいきなり使えて、前回の途中からすんなり開発に入れるのは嬉しいです。
ところで、sshの多段の設定やkeyの設定は、私は.ssh/configに書く派です。
Trampの設定は率直に言って意味不明ですし、普通にsshで入りたい時にも使えるので便利です。
バックアップ系ファイルの作成はOFFにする
お目当てのファイルを開いたら、ゴリゴリ編集します。この時、バックアップやオートセーブのファイルの生成はOFFにしてます。gitのstatusで見た時に鬱陶しかったからです。*2
基本的に、開発サーバーのものを直に変えて、すぐ結果を見ているので、気をつけてなくても小まめにセーブしてます。
最初は不安でしたが、今まで困ったことはありませんでした。こんなの使うくらいならセーブしろという感じです。
Auto Complete Mode
ソースの編集中はAuto Completeで補完無双してます。Auto Completeは補完機能です。メソッド名とか補完するアレです。昔はこんなの軟弱者が使う機能だと思っていましたが、今やこれないと生きていけないです。*3
結構変な補完もされますが、それはそれです。真面目に調整すれば良い結果になるかもしれませんが、それはそれです。
素のターミナル
ひととおり出来たら、rails consoleが使いたくなったりするでしょう。ここまでEmacs推しておいてアレですが、私はEmacs内でshellは使いません。
デフォルトのshellを使ったらディレクトリ名のTab補完が効かないという事件が以前あり、そこから色々と試したんですが、Emacsのshellはどれも…こう…微妙というか…はい。
あと重いファイル開いたり、tailでログを延々と流しっぱなしにする時にEmacsだと怖いってのもあります。*4
なので、私はMac OS Xに標準でついているターミナルを使ってます。タブの切り替えとか出来て、必要十分です。軽いし。
Anything
ひと仕事終えたら、gitのbranchを切り替えてfeatureブランチ(機能開発ブランチ)に切り替えて頑張りたくなるかもしれません。branchを切り替えた場合、同じファイルでも読み込み直す必要があるケースもありますよね。
そこでrevert-buffer、なんですが、ここでもAnythingの出番です。というかここが主な出番です。
Anythingは、様々な操作の統一的なインターフェースとなるものです。説明し辛いので使ってみて下さい。
M-xでAnythingを起動したら、その時点でコマンドの履歴も見れますし、全てのコマンドからpatternで絞っていってお目当てのものを掘り出すことができます。
なので、revert-bufferの場合は、reve…とかまで入力すれば十分絞り込まれた結果になります。
Emacsはコマンド多すぎでなんとなく覚えているコマンドばかりなので、適当に入力して検索できるAnythingは超便利です。
ちなみに、Anythingに頼らず手癖で割り当てたキーを使うのは、
- ソースコードのコメントアウト
- ソースコードの段落揃え
- undoとredo
これらは手癖すぎて、逆にコマンド名も知りませんし、どういう操作か(どうキーを打ってるか)も実は書けないです。
知りたい人はググって下さい。
その他
細かい事を言い出すとキリがありませんが、他で大事な設定は- C-h でのbackspace
- 行数表示(Rubyのエラーから場所を推測できなくなる)
speedbarとかGTAGSとかは必要であれば使う感じですが、使用頻度は落ちます。
そして使って馴染まずに、.emacsから排除された拡張は膨大にあります…。
まとめ
- 悟りでも開かないと、Anythingを使わないノーマルのEmacsを使う時代には戻れない
- Trampが生まれなかった平行世界で、開発サーバーのEmacsを直に使う世界があるかもと考えるだけでも苦痛
- Xcodeで飼いなさられた我々はAuto Completeが手放せない
- Emacsのshellはビミョー
*1 : 昔は好きだったのですが、いい加減Emacs Lispでめんどくさい拡張を揃えるのが嫌になってきました。CotEditorのように色々な言語で拡張が書けたら良いのに…。
*2 : でもよく考えたら、これはgitでignoreすれば良かったのでは。
*3 : そう、Xcodeの超秀逸な補完を一度使ってしまっては…。
*4 : ソースの編集中に固まるなど。
一足お先に。 −高専出身者が語る技術者ブログ− 高専で学んだことは、ソーシャルビジネスにどう活かせるのか。社会人一年目の目線で語る日々の徒然。










