vim-users.jp

Hack #232: Clojure開発環境を整える

Posted at 2011/09/25
このエントリーをはてなブックマークに追加

こんにちは、ujihisaです。Vancouverでは空前のClojureブームが発生しており、毎週のようにClojure勉強会があり、Vim使いやEmacs使いが集結しています。

問題1

Clojureでシンタックスハイライトや自動インデントを行いたい。

解決1

VimClojureというプラギンをインストールします。

https://github.com/jondistad/vimclojure

なお、g:clj_highlight_builtinsを設定すると標準関数のハイライトが、またg:clj_paren_rainbowを設定すると括弧の対応が虹色に美しく輝き、便利です。筆者は以下のようにして両方とも利用可能にしています。

~/.vimrc:

let g:clj_highlight_builtins = 1
let g:clj_paren_rainbow = 1

vimclojure highlighting

問題2

改行するたびにyankしている文字列が消える?

解決2

VimClojureをアンインストールするか、頑張ってパッチを書きます。

VimClojureには深刻なバグがあり、インデントを調整するたびにyankしている文字列が完全に破壊されます。

問題3

Clojureのコードを即座に実行し、結果を別バッファに表示しつづけたい。

解決3

quickrunを用います。もしcljというコマンドを持っていれば、ファイルタイプがclojureであるバッファに対してquickrunは無設定で動作します。

https://github.com/thinca/vim-quickrun

quickrun clj

問題4

quickrunに時間がかかりすぎる。

解決4

JVMの立ち上げ時間とライブラリの読み込み時間がとても長いのが原因です。Clojure処理系を立ち上げたままにしておくことで、劇的な高速化が実現できます。そのための道具としてNailGunとJarkがあります。筆者のオススメはJarkです。

https://github.com/icylisper/jark

Jarkをインストールしたら、まずはJarkサーバを立ち上げましょう。vimshellなどで

$ jark vm start

として事前にJarkサーバを立ち上げ、そしてquickrunします。OSを終了するときまで、すなわちVimを終了するときまで、Jarkサーバを終了する必要はありません。

quickrunは既にjarkに対応していますので、無設定でいきなり使えるはずです。

以下に感動的なベンチマーク結果を載せます。

(println "hello")

とだけ書いたコードをcljjarkのそれぞれでtimeコマンドで比較してみたところ、それぞれ

  • clj

      1.40 real         2.09 user         0.15 sys
    
  • jark

      0.19 real         0.11 user         0.06 sys
    

となりました。実験はかなりパワフルなiMacを用いて行ったので、一般的な初代MacBook Airなどのマシンで行うと、さらに顕著な差が出るでしょう。

ujihisa

もどる
blog comments powered by Disqus