記録は作業の証

鉄道とコンピュータ

Vim/NeovimでLisp処理系と対話するためのプラグイン Vlime

導入

リポジトリはこちら github.com

公式マニュアル

公式チュートリアル

Susam Pal 氏によるチュートリアル

設定

デフォルトでは'\'(バックスラッシュ)キーをプレフィクスとするコマンドを使う。 自分はカンマに設定している。

 let g:vlime_leader = ','
" sbclとcclはプラグイン内(vim/autoload/vlime/server.vim)で対応している
" 他の実装はドキュメントを見て少々特別な設定をする必要がある
let g:vlime_cl_impl = 'ccl'

Vlimeのリポジトリに含まれるstart-vlime.lispを手動でLisp処理系にロードしてから使うプラグインである。そのためシェルのエイリアスを設定しておくとよい。

よく使うコマンド

太字は特によく使う。

  • ,rr Lisp実装を起動してSLIMEサーバを開始し、接続する。オムニ補完はSLIMEサーバと繋がっているときに有効。

  • ,cc 手動で起動したSLIMEサーバに接続する。

    • リモートのLisp処理系に繋いでリモートデバッグできる(!)。
  • REPLへ送信(,s)
    • \i インタラクションモードの開始と終了。
    • \st バッファ内のトップレベルにある式で、カーソルの下にあるものを送信する。
    • \se 今カーソルが合っている式を送信する。
    • \sa 今カーソルが合っているアトムを送信する。
      • 変数を参照するときに使う。
    • \l 今のファイルをロードする。
    • \b 関数の入口にブレークポイントを設定する。
  • コンパイル(,o)
  • 定義の削除
    • \uf 関数を削除する。
    • \us シンボルを削除する。
    • \ui 対話的に削除する。
  • マクロ展開
    • \mm MACROEXPANDしてプレビューバッファに出す。
    • \m1 MACROEXPAND-1してプレビューバッファに出す。
    • \ma 全ての入れ子のマクロを展開する。
  • REPLバッファ
    • CTRL-C REPLスレッドを止める
    • \I カーソル下の評価結果をインスペクタで見る。
    • \y 無名バッファに評価結果をヤンクする。
    • \C REPLバッファをクリアする。
    • CTRL-n 表示されている次のオブジェクトに移動?
    • CTRL-p 表示されている前のオブジェクトに移動?
  • デバッガバッファ
    • d カーソルの下のフレームについて、ローカル変数やソースファイル位置などの詳細を表示する。
    • S カーソル下のフレームに関係するコードへジャンプする。
    • T カーソル下のフレームに関係するコードへ新しいタブでジャンプする。
    • a ABORTする。
    • c CONTINUEする。
    • e カーソルの下のフレーム内で式を評価する。
      • 誤りを修正できる?
    • E カーソルの下のフレーム内で式を評価してREPLへ送信する。
    • C コンディションオブジェクトをインスペクタで見る。
    • r カーソル下のフレームを再起動する。
    • s カーソル下のフレームでステップ実行を始める。
    • x ステップオーバー。
    • o ステップアウト。
    • D 逆アセンブル
  • インスペクタ
    • 型やオブジェクトのスロットなどを表示してくれるようだ
    • \IT トップレベルにある中でカーソルの下にあるものをインスペクタで見る
    • \II カーソルの下の式またはアトムを評価してインスペクタで見る
    • \IE カーソルの下の式を評価してインスペクタで見る
    • \IA カーソルの下のアトムを評価してインスペクタで見る
    • \I ビジュアルモードで選択中の領域を評価してインスペクタで見る
    • インスペクタバッファ
      • Space フィールドやボタンを押す
      • CTRL-n 次のフィールドやボタンへ
      • CTRL-p 前のフィールドやボタンへ
      • s カーソルの下のフィールドの値をREPLに送信する。
      • S インスペクタで見ている値をREPLに送信する。
      • p インスペクタで 一つ前に見ていたオブジェクトに移動する。
      • P インスペクタで 一つ次に見るオブジェクトに移動する。
      • R インスペクタバッファを更新する。
    • インプットバッファではiで書いてEscで抜けてEnterキーで確定
  • パッケージ
    • \p 現在のバッファで使うパッケージを指定する
  • クロスリファレンス