Vim プラグイン QuickRun を OCaml に対して利用する
Vim のプラグインに編集中のバッファのプログラムを実行し、その結果を別のウィンドウに表示してくれる QuickRun というものがあります。大変便利なので Vimmer にはとても有難い存在です。
QuickRunはバッファの内容を一時ファイルに保存し、それを処理系やコンパイラに渡しているみたいです。しかし、外部プログラム(ライブラリなど)を利用しつつ実行したい場合デフォルトでは困ったことになります。
今回、OCamlで自分の書いたライブラリを呼び出した場合について説明します。たとえば
open Hoge let _ = print_endline Hoge.message
というコードを実行したいとします。
このときデフォルトでは :QuickRun または \r とすると実行してくれますが打ちこんでみると
Error: Reference to undefined global `Hoge'
というメッセージが表示されます。
これに対処するにはバッファにあるプログラムの最初に #load "Hoge.cmo" と書くか、ocamlmktop を使って Hoge.cmo をリンクしたトップレベルをつくりそれを QuickRun から呼ぶようにします。そして
:QuickRun ./myocamltop
などとすれば実行されるはずです。
あとは \r で一発で実行してほしいのでキーマップを設定してあげます。
:nnoremapr Quickrun ./myocamltop
n + noremap の意味: n はノーマルモード、i なら挿入モードでのキーマップを変更する。