vimclojureとcakeのインストール

vimclojureとcakeで簡単にslime/swank的なことができる。
Ubuntu 11.04での設定を書いておく。

まあ、ここにも載ってるわけですが・・・
http://ubuntuforums.org/showthread.php?t=1746137

初期設定

まずは必要なパッケージをインストール
$ sudo apt-get install vim openjdk-6-jdk rubygems
$ sudo gem install cake
Cakeを起動できるようにbashエイリアスを設定

パスを通してもいいんだけど、一つだけなのでエイリアス

$ echo "alias cake='/var/lib/gems/1.8/bin/cake'" >> ~/.bashrc
$ exec bash
Vimclojure用のNailgunクライアントをインストール
$ mkdir -p ~/src
$ cd ~/src
$ wget http://kotka.de/projects/vimclojure/vimclojure-nailgun-client-2.2.0.zip
$ unzip vimclojure-nailgun-client-2.2.0.zip
$ cd ~/src/vimclojure-nailgun-client
$ make
$ sudo cp ng /usr/local/bin/
Vimclojureをインストール
$ cd ~/src
$ wget -O vimclojure-2.2.0.zip http://www.vim.org/scripts/download_script.php?src_id=13986
$ mkdir -p ~/src/vimclojure-2.2.0
$ cd ~/src/vimclojure-2.2.0
$ mkdir -p ~/.vim
$ cp -a autoload doc ftdetect ftplugin indent plugin syntax ~/.vim/
vimのファイルを編集

~/.vimrcを編集

syntax on
filetype indent plugin on

let g:vimclojure#WantNailgun = 1
let g:vimclojure#NailgunClient = "ng"
let g:vimclojure#HighlightBuiltins = 1
let g:vimclojure#ParenRainbow = 1
let g:vimclojure#DynamicHighlighting = 1
ドキュメントのタグ作成

vimを起動して下記を実行

:helptags ~/.vim/doc

これでドキュメントが表示できれば成功。

:help vimclojure

プロジェクトごとの作業

Cakeプロジェクトを作成
$ mkdir -p ~/work
$ cd ~/work
$ cake new hellocake
$ cd hellocake
VimclojureのNailgunサーバをプロジェクトに導入

project.cljを編集

(defproject hellocake "0.0.1-SNAPSHOT"
  :description "TODO: add summary of your project"
  :dependencies [[org.clojure/clojure "1.2.1"]]
  :dev-dependencies [[vimclojure/server "2.2.0"]]) ; ←これを追加
依存パッケージの取得
$ cake deps

編集時

Nailgunサーバの起動

一度起動すればプロセスが常駐します。

$ cake ng
NGServer started on 127.0.0.1, port 2113.
$
Vimで編集

Nailgunサーバが常駐した状態で、vimを起動して編集。

$ vi src/hellocake/core.clj

Vimclojureコマンド一覧

マニュアル丸写しですが。。。
通常のモードで下記を実行します。
の設定を変えている場合は、先頭は\ではなく設定した文字です。

評価
\et (EvalToplevel)
カーソル位置のトップレベル式を評価
\ef (EvalFile)
ファイル全体を評価
\eb (EvalBlock)
ビジュアルモードで選んだブロックを評価
\el (EvalLine)
現在の行を評価
\ep (EvalParagraph)
現在のパラグラフ
ロード
\rf (RequireFile)
ファイルをrequire (:reload)
\rF (RequireFileAll)
依存先を含めてファイルをrequire (:reload-all)
\rt (RunTests)
ファイルをrequireし、そのファイルをclojure.contrib.test-isを使ってテスト
マクロ展開
\me (MacroExpand)
カーソル位置を含むマクロ式を展開
\m1 (MacroExpand1)
カーソル位置を含むマクロ式を1段だけ展開
ドキュメント
\lw (DocLookupWord)
カーソル位置の単語のドキュメントを参照
\li (DocLookupInteractive)
対話的な入力でドキュメントを参照
\fd (FindDoc)
対話的な入力でドキュメントを検索
\jw (JavadocLookupWord)
カーソル位置のクラスのJavadocを外部ブラウザで開く
\ji (JavadocLookupInteractive)
対話的な入力でJavadocを探し、外部ブラウザで開く
ソース調査
\sw (SourceLookupWord)
カーソル位置の単語のソースを表示(参照のみ)
\si (SourceLookupInteractive)
対話的な入力でソースを表示(参照のみ)
\gw (GotoSourceWord)
カーソル位置の単語のソースへ移動
\gi (GotoSourceInteractive)
対話的な入力でソースへ移動
\mw (MetaLookupWord)
カーソル位置の単語のメタデータを参照
\mi (MetaLookupInteractive)
対話的な入力でメタデータを参照
REPL起動
\sr (StartRepl)
REPLを起動する
\sR (StartLocalRepl)
現在のバッファのnamespaceでREPLを起動する
Lispワード登録
\aw (AddToLispWords)
カーソル位置の単語をLispワードに登録し、特殊形式・マクロと同じインデントにする。(通常、ビルトイン以外は関数インデント)