vimを使い始めた

RejectでRubyを書く予定なので、Rubyの環境構築をしようと思っていたんだけど、どうも納得行く環境ができない。irbとの連携をうまく取るようにしたいのだが、それができないのである。Emacsで画面分割をして、左でソースをいじり、右でirbを実行したり、refe引いたり、というのをやりたい。

というか、EmacsにおけるRの実行環境ESSがまさにそんな感じだからである。スクリーンショットを取ってみるとこんな感じ。
http://gyazo.com/02af5f4698ca642fcd717eea2a797d34.png
ESSについてはTsukuba.R#2のLTとかで話す予定なんだけど、これが最高に書きやすい。左のbufferでC-cC-nとやれば、現在の行が右下のRのインタラクティブシェルに送りこまれるし、関数の上でC-cC-vとやれば右上でhelpが速攻引ける。helpにあるexampleとかはlを押すだけで、実行できるからこれはもう神。

これと同様の環境をRubyで作りたかった。ruby-modeとかinf-rubyあって、試したんだけどどうもしっくりこない。それっぽいやつことはできるんだけど、細かい動作が気にくわない。Route 477(2007-08-01)とかに書いてある設定を.irbrcとかに書いているんだけど、それを見てくれるはずもなく。。。

自分で何か関数とかメジャーモードを書くかと思って書いてたんだけど、どうもelispで書いてると幸せになれる気がしない*1。というわけでタイトルのvimを使い始める流れになりました。

vimで画面三分割して…みたいなことを考えてたんだけど、これまたちょっと色々ある。vimの画面分割は縦分割も横分割もできるんだけど、分割した後にirbを走らせることができない(EmacsのM-x shellのようなことができない)。しゃーないからscreenでやるかーとか思ってたんだけど、screenは縦分割ができないのであった。macbookは縦は広くないので、これはきびしい。patchを当てれば縦分割をできるということだったが、うまく行かなかった。てか、プログラムがりがり書いたりしない人間なので、パッチの当て方というものから調べた(ry。

二つ目のパッチがうまく当たらなかったのでした。leopard環境。

なので、terminalを左右に二つ並べるというなんとも妥協的な感じになってしまった。irbを直で叩く、とかを考えるとまあこうなるのかなあ。ターミナル間の移動がネックになりそうな気がするんだけど、leopardならCmd+`でいけるので結構よい。タブだと同時に見れないので、とりあえずやらない方針で。

Emacsとvimの両刀使いとなると結構混乱しそうな気がするんだけど、まあしゃーない。日本語の文章書く時にはEmacsが落ちつくし、ESSは最強なので(ここはゆずれない)。

*1:interactiveとか好きになれないんだけど