初めてのvimclojure

はじめに

clojureというかLeiningenのインストールについては先日書いたこちらから。
ちなみに環境はMac OS X Lionです。

clojureのためだけにemacsを新たに学ぶモチベーションはなかったので(そもそもclojureのためでもないのだけど)vimで何とかならないものかと調べてみました。
色々ページは見つかるのですが、leiningen (clojure) + vimclojure (w/ nailgun)という組み合わせについての情報は少なく、しかもどれも新しいバージョンが次々と出るので陳腐化している(&compatibilityがなくなっている)情報も多いです。
とりあえず現時点(2012/02)でうまくいった環境について書いておきます。が、上にもあるようにこれもまたすぐに陳腐化してしまうはずです。

vimclojureのインストール

何がともあれ、まずはvimclojure pluginをインストール。
https://github.com/vim-scripts/VimClojure
にあるので、git cloneするもよし、個別にダウンロードするもよし。
ここでは2.3.1をダウンロードして、(他のvimプラグイン同様に).vimディレクトリ以下に配置します。(Pathogenがあると便利ですが、ここでは触れません.)
.vimrcファイルへの変更は後でまとめて行います。

Vimclojure-nailgun-client

Nailgunは、JVMのインスタンスを走らせるサーバーのことです。詳しいことは置いておいて、これがないとvimclojureが真価を発揮できません。まずはクライアントのインストールからです。
https://bitbucket.org/kotarak/vimclojure/downloads
からダウンロードして解凍します。
(※homebrewからダウンロードしたところうまくclojureが動かなかったという報告があるので、homebrewユーザーの方はご注意ください。)
cd ~/vimclojure-nailgun-client/
make
するとngというファイルができます。(ngがexecutableであることも確認しておきましょう)
このngファイルを$HOME/bin など、パスが通っているディレクトリにコピーします。leinファイルがあるところと同じが良いでしょう。
ここでngコマンドが使えるようになればここはOKです。
$ ng
Usage: ng class [--nailgun-options] [args]
         (to execute a class)
  or: ng alias [--nailgun-options] [args]
         (to execute an aliased class)
  or: alias [--nailgun-options] [args]
         (to execute an aliased class, where "alias"
          is both the alias for the class and a symbolic
          link to the ng client)
where options include:
  --nailgun-D<name>=<value>   set/override a client environment variable
  --nailgun-version           print product version and exit
  --nailgun-showversion       print product version and continue
  --nailgun-server            to specify the address of the nailgun server
                              (default is localhost)
  --nailgun-port              to specify the port of the nailgun server
                              (default is 2113)
  --nailgun-help              print this message and exit
こんな感じ。

.vimrcファイルの編集

vimrcファイルに以下を追記します。Pathogenを使っている場合はfiletype on以降に書きます。
let vimclojure#HighlightBuiltins = 1
let vimclojure#ParenRainbow = 1
let vimclojure#NailgunClient = "PATH_TO_YOUR_ng_file_HERE"
let vimclojure#WantNailgun = 1
:helptags ~/.vim/bundle/VimClojure/doc/

project.cljに依存関係を記述

clojureのみならず、nailgun-sever, leiningen-nailgun用のファイルなどはdependencyに記述することで取ってくることができます。
ここでは、
lein new test_proj
として、作られたtest_proj/project.cljファイルを以下のようにします。
(defproject test_proj "1.0.0-SNAPSHOT"
  :description "FIXME: write description"
  :dependencies [[org.clojure/clojure "1.3.0"]
                 [vimclojure/server "2.3.1"]
                 [org.clojars.ibdknox/lein-nailgun "1.1.1"]])
おそらく下の2行を追記することになると思います。
これですべての準備は完了です。

なんか作ってみる

project.cljがあるディレクトリで
lein deps
として依存関係ファイルをすべて落としてきます。
次に
lein nailgun & (&はバックグラウンドで動かしたい場合)
でnailgun serverを起動します。
あとは vim sample.clj などでファイルを作成/開くと、色々出来るようになっているはずです。
例えば、
  • ()がカラフルになっている
  • \el 行単位の評価
  • \eb visual block単位での評価
  • \ef ファイルの評価
  • \sr REPLが開く。
その他は
:help vimclojure
でドキュメントが開きます。

終わりかた?

lein nailgun
単体で実行していた場合は、ctrl-zなどで自動的にnailgun-serverも終了します。
lein nailgun &
で実行していた場合、デフォルトだと2113ポートが開きっぱなしなので気になる方は
lsof -i :2113
でPIDを確認して
kill (-KILL) PID番号
すると完全に終了します。


以上、(もしかしたら冗長な設定があるかもしれませんが)環境構築の手順でした。









タグ:

vim mac clojure
最終更新:2012年02月10日 14:31