Limp : Lisp IDE

公式サイト


EmacsにするとハイスペックのPCが必要ですが、VimSBCLを混ぜる程度なら低スペックのPCで出来る。
Lispの変態性とVimの手触りが何ともいえません。☆彡

材料 ( 1人前 )

limp-0.3.4.tar.gz 一匹
eval付きのVim7.x 1個
SBCL 1本
SBCLコマンドライン編集の為にrlwrap 1合
SBCLとやり取りする為にUNIX SCREEN 少々
Lispリファレンスの為にThe Common Lisp Hyperspec 米に対してお好みで
Lispリファレンスを作成する為にPerl お好みの量
Opera Limpのデフォルトのブラウザ

作り方

  1. Operaをインストールします。
  2. limp-0.3.4.tar.gzをダウンロードします。
  3. Debian系GNU/Linuxディストリビューションだったら
    $ sudo aptitude install vim-full sbcl hyperspec rlwrap screen perl
    として一気に残りの材料を混ぜ合わせてしまいましょう。
  4. 解凍したlimp-0.3.4.tar.gzディレクトリに移動して
    $ sudo ./install.sh
    とします。
  5. install.shを実行すると、Limpは/usr/local/limp/0.3.4にインストールされて、Vimのコンフィギュレーションディレクトリのftplugin/lispsimlinkを作ります(ディレクトリが無ければ自動で作成します)。
  6. 出来上がり。

コツ・ポイント

何人前、とあえて付けてるのは、季節の鰻寿司を読みながら記事を書いてるから。^^;
install.shを実行する前にHyperSpecの位置を確認しておいてね♪
Debian系ディストリビューションだったら
/usr/share/doc/
にインストールされているはずだけど、違ったら解答されたlimp-0.3.4.tar.gzのbinディレクトリにあるregenerate-hyperspec-thesaurus.plの3行めあたりにある$BASEの記述をHyperSpecがインストールされているパスに直してね♪
作り方のポイントは、ややこしい事??


使い方

使い方の説明は基本的にはこちらに書いてありますが、ここでは紫藤のページテンプレートの使い方と展開形の確認で紹介されているマクロ、mvbindを用いて、Limpの使い方の概観を眺めてみます。

まずは端末から、
vim mvbind.lisp
と打って、新規にmvbind.lispVimを立ち上げます。

そうすると、黒画面のLispモードでVimが立ち上がります。

このように、Limpを入れたVimは拡張子が.lispのファイルを開こうとすると、自動でLispモードで立ち上がるのです。

ここでiを打って挿入モードに切り替え、入力を始めます(正直、慣れない・苦笑)。

さて、Limpでは、Emacs系のエディタと違い、括弧を入力したと同時にコッカ(閉じ括弧の事)もすぐに補完してくれます。

これはなかなか賢いかもしれません。どの括弧とどの括弧が対応するのか、最初から閉じられていれば考える必要は確かに無いのです。

さて、

(def)
まで打ったところでC-n(Ctrl+n)します。

そうすると、LimpはHyperSpecを調べてPerlで作ったデータベースから関数名を調べて候補を返してくれます。これがLimpのキーワード補完機能です。

キーワード補完機能内のカーソル移動はC-n(Ctrl+n)C-p(Ctrl+p)を使って行います。

なお、決定には[Enter]キーは用いません。Vimの流儀に従って、選んでそのまま入力を継続出来ます(Emacsより1回キーを叩く回数が少なくなる)。

モードを切り替えつつ、取り合えず2行目の頭

(defmacro mvbind (&rest argvs)
`())
まで完成させてしまいます。
次に来るのがmultiple-value-bindと言う極めて長ったらしい関数名なんですが、ここで、
m-v-b
と打ってC-nすると、きちんとmultiple-value-bindと言う関数名候補を挙げてくれます。

Limpはいくつかの関数の省略表記を理解してくれるのです。

ところで、multiple-value-bindとは一体何でしょうか?

ここではその解説はしません。と言うかそう言う時はHyperSpecの出番です。

一旦[Esc]キーで挿入モードから抜けてから、カーソルがmultiple-value-bindの単語周辺にある事を確認して\hp(\とhとpを同時に押)します。そうするとHyperSpecが立ち上がります。

Limpではデフォルトでは、ローカルにダウンロードしているHyperSpecOperaでブラウズします。何故なら、Limpの作者はOperaを愛用している模様です。また、LimpではOperaが推奨ブラウザです。

基本的にVimスタイルはLispbox等のEmacs系IDEと違い、全てをVimで賄う、と言う事は行いません。そして、いくつか他ブラウザの候補もあって、

辺りも使うことは出来るようです。

ブラウザを変更したい場合は、Debian系ディストリビューションだったら、

/usr/local/limp/0.3.4/bin/
内のlimp-hyperspec.plに上記ブラウザの候補がコメントアウト状態で書き込まれているので、Operaをコメントアウトして、任意のブラウザが作動するように設定しなおせば良いでしょう。

取り合えずマクロ、mvbindを挿入モードで完成させてしまいます。

Vimmvbindを書き終えたら、[Esc]キーで挿入モードを抜けて[F12]を押してください。

そうするとVim下部のミニバッファから

connect to [boot new]:
と尋ねられます。

実はこの時点ではVimSBCLはまだリンクしていません。

従って何も答えようが無いので、このまま[Enter]を押します。



そうすると、ミニバッファで

Name the Lisp:
(Lispに名前を付けてください)と尋ねられます。

ここがLimpの特徴的なところで、接続先のSBCLの「立ち上げ名」を付けられるのです。ここでは取り合えずtestと名付けます。

なお、一回名前を付ければLimpを起動している限りはこの「名付け作業」は二度とする事がありません。

[Enter]を押します。



今度はミニバッファで

Path to core to boot [use system-default]:
(ブート用のコアにパスを通す[デフォルトを使用])とメッセージが出ます。

取り合えずデフォルト使用で構わないので、そのまま[Enter]を押します。



すると、端末上でSBCLが立ち上がります。

一旦LimpでSBCLに接続してしまえば、あとは[F12]キーでVimSBCLを行ったり来たり出来ます。

つまり、VimでLispコードを編集→コードをSBCL側に送信→[F12]でSBCLに切り替え→SBCL側でプログラムの実行結果を見る→[F12]でVim側に戻り、またLispコードを編集、と言うのがLimpでの作業の流れになります。

では、また[F12]を叩いて一旦Vim側に戻ります。



Vim側に戻って、挿入モードではなく、カーソルがマクロ定義部分にかかってる事を確認したら\et(\とeとtを同時に押)します。

そうすると、ミニバッファに

"mvbind.lisp" [変更あり][新ファイル] 2 行 --100%--
と表示されます。

これは関数定義がSBCLに送られた、と言う事を示すサインです。また[F12]で画面を切り替えてみましょう。



SBCL側を見てみると、マクロmvbindがきちんと評価されている事が分かります。



また、LimpではVimのミニバッファを利用してS式を評価させる事も可能です。そのコマンドは:Evalです。

例えば、(2 + 3 + 4) × 5と言う計算をしたい、とします。

Vimが挿入モードでは無い事を確認して、

:Eval (* (+ 2 3 4) 5)
と打つと、ミニバッファに上のコマンドが書き込まれるのが分かると思います。

[Enter]キーを打った後、[F12]でSBCL側に移動します。


SBCL上で(2 + 3 + 4) × 5の計算結果が表示されている事が分かります。

作成したコードをSBCLに送り、そして作成したコードのテストをミニバッファで試してSBCL側へ行く、と言う使い方が出来ます。

如何でしょうか?Limpを使えばVimでもLispbox並の開発環境が手に入ります。また、Limpは確かに軽快で、Emacs系IDE独特の「もっさり感」は微塵も感じられません。

Vimユーザーは一回Limpを試してみる価値はあると思います。


備考

  • 記事内ではVimを用いたが、GUIヴァージョンのgvimを用いても構わない。
  • LimpはやはりVimユーザー向け。Limpは優秀な開発環境を提供しているが、Limp自体と関係ないところで、Vim自体の操作に習熟してないと、初心者にはVim独特のキー操作に躓く可能性が高い。
  • また、Emacsのショートカットキーに関しては批判が多いが、一方、Limpの方がもっと複雑怪奇なコマンドキーを採用していると思う。最大4つくらいのキーを「同時に押す」事を採用しているところを見ると、意外とEmacsの方が使い易い可能性さえある。
  • いずれにせよ、Vim自体が初心者に難しいし、導入にせよ、GNU関連のフリーのツールをわんさか使うので、やはり玄人向けである。特に単なるWindowsユーザーには導入はキツい。初心者、またはWindowsユーザーはLispboxを使うのが無難ではある。
  • 出来たばかりで比較的新しい開発環境である。

Limpコマンド

Limpコマンド


Comments