2008年7月1日火曜日

本当はTerminal.app上でvimを使いたいけどモッサリ感が気に食わないのでわざわざGVimを起動していた件

前から思っていたのですが、ある程度まとまったのでメモです。
何か他にいいアイデアあったら教えてください><

ここ半年くらいエディタにvimを愛用するようになりましたが、Terminal.app上に起動したvimではなく、ここのcocoaなGVimを使っています。

通常お仕事での開発や、色々お遊びするときにも大抵シェルは触っているので、本来はTerminal.appの中でvimを起動し、色々やりたいわけですが、


  • Terminalの中でvimを動かした時に全体的にもっさり感じる

  • 特にカーソル移動の際の重たい感じが耐えられない



これらはデフォルトのTerminal.appのウインドウサイズ(80x24)ではほとんど問題にならないのですが、大きくすればするほど、どんどん動きが重たくなっていきます。
僕のVimのウインドウは大抵左側にカレントディレクトリのツリー表示があり(元TextMateユーザーだからか!?)、編集部分も上下二つに分かれています。
3ぺインのメールソフトのような感じなわけです。
こんな環境なので、ウインドウサイズは必然的に大きくなりがちです(160x50くらいあると快適)。

このくらいのウインドウサイズになったときにどうもvimの動作、特にカーソル移動にもっさり感を感じるため、CocoaなGVimを起動していました。
これはサクサク動いてくれるので、多少不便だけどもサクサク感を優先していました。
ただ、やはりシェルに戻るときなどはQuickSilver経由でTerminalにフォーカス移したり、Command+Tabで切替えたりしていたわけです。
サクサクだけど真のサクサクではないというかw

で、今日この問題をようやく解決できそうなひとつのソリューションを発見。

「X11 + rxvt-unicode + screen + kinput2 + canna な環境でvimを使う」
です。Macに付属のX11上でurxvtを起動し、その中でvimる。というわけ。

X11を起動したときにいきなり起動するxtermは日本語は表示できないものの、異常にサクサクな感じなのが気になっていました。
じゃあこれに日本語が通りそうなTerminalアプリケーションを入れてその中でvimを起動したら速いのではないか?と思ったわけです。
で色々ぐぐってみたところ、rxvt-unicodeとkinput2とcannaでなんか出来そうだぞ。というわけ。
Terminal.appも広大なウインドウサイズでscreenするともっさりしてましたがurxvtはサクサクです。これならタブの代用になってくれます。

全部MacPortsからインストール出来るので構築は簡単でした。
各種設定も下記ページが非常に参考になりました。
Beginning OS X 10.5/インフラ整備編

これらな環境で実際今日一日作業してみているのですが、CocoaなGVimよりもサクサク。いまのところ不満無しです。
1280x1024のディスプレイいっぱいurxvtのウインドウにしてvimを起動しても全くサクサク感が失われません。screenによるシェル移動もすいすいいけます。
僕はもともとTerminal.appもGVimもアンチエイリアスをオフにして作業していたので、文字の綺麗さとかそのへんもあまり気になりません。
気になり出しても設定でなんとかなりそうなところだし、大丈夫でしょう。

日本語入力だけはcannaとkinput2に慣れる必要はありますが、
このサクサク感の為なら全然問題ありません。

しばらくこの環境でいってみることにします。
本当は、Terminal.appがモッサリしなけりゃフォントも綺麗だし最強なんですけどね。。

このエントリを書いていて、ふと他のvim使いやEmacs使いはどうやっているのか気になりました。
みんなもっさりを耐えながらやっているのだろうか、それともcom.apple.Terminal.plistとかに爆速の設定があるのだろうか。
もっといいターミナルエミュレータがあるのだろうか。
みんなどうやってるんだろう?

1 件のコメント:

k1LoW さんのコメント...

Emacsはターミナル内で使っていますが、まったくもってサクサクです。

久しぶりにブログを書く

最初ログインできなくて焦った。 いや、ログインはできたのだが、ログイン後に自分のブログの管理画面に遷移できず、新しいブログを作成する画面になってしまったからビビッてしまった。 どうやら、Google+(現在はサービス終了)に紐づいたプロフィールを設定しているとこのような状況に陥る...