ド素人が始めるCommon Lisp 2. vlime, pareditに慣れよう

Common Lisp ド素人

さっそくCommon Lispに慣れていこうと思っているところではありますが、その前にvlime, pareditに慣れないことには操作が覚束ない。ということでまずはvlime, pareditの操作方法を把握していこうと思う。

Contents

vlime超初歩

REPLに接続

.lispファイル編集中に\rrでREPLに接続できます。vlimeのREPLはnomodifiableになっていて直接入力ができません。そのかわり編集中のファイルの式をREPLに簡単に渡すことができるinteractionモードがあります。\iでinteractionモードにすることができます。

  • \rr でREPL接続
  • \iでinteractionモード

とりあえずこの二つは覚えておいたほうがよさそうだ。ほかにも重要なものはたくさんありそうだがまずはこの二つが自分には必要でした。

paredit超初歩

()の補完

すぐにわかるpareditの効果として"("を入力するだけで"()"となる。カーソルは()の中にいる状態で。

( --> ()

さらに余分な")"を打とうとしたり、対になっている"("、")"を片方のみ削除しようとしても何も起こらず()の対応を保持してくれる。何も起きないのか即補完が働いているのかはよくわからないが、細かいことはどうでもいい。とにかく基本的に()の対応が保持されるように動いてくれているので何個")"がいるのか等に悩む必要はない。

()の操作

()の移動

"(",")"にカーソルを合わせた状態で<Leader><<Leader>>と入力することで"(",")"を左右に移動させることができる
<Leader><を"("の位置で使用

(1 2 3 4 5 "("6 7 8 9 10)) --> (1 2 3 4 "("5 6 7 8 9 10))

<Leader>>を"("の位置で使用

(1 2 3 4 5 "("6 7 8 9 10)) --> (1 2 3 4 5 6 "("7 8 9 10))

上記が期待される動作であるが、なぜかわからないが私の環境では<Leader><が動きません。右には行けるが左にいけないというイミフ状態。。。
ちなみにデフォルト状態で<Leader>は","である。

()の削除

()の対応を保持してくれるおかげで"("や")"を単独で削除しようとしても削除できない。
空リスト()であれば両方同時に削除される。

空リストでない場合はリスト上で<Leader>Sで()が削除される。

(list 1 2 3 4 5 (6 "7" 8 9 10 )) --> (list 1 2 3 4 5 "6" 7 8 9 10)
()の分解、結合

リストをカーソル位置で分けるには<Leader>Oを使う。

(list 1 2 3 4 5 "6" 7 8 9 10) --> (list 1 2 3 4 5) "("6 7 8 9 10)

逆に隣り合ったリストを結合するには<Leader>Jを使う。

(list 1 2 3 4 5)"("6 7 8 9 10) --> (list 1 2 3 4 5 "6" 7 8 9 10)
新しく()で囲む

カーソル位置のシンボルを新たな()で囲むには<Leader>Wを使う。

(list 1 2 3 4 "5" 6 7 8 9 10) --> (list 1 2 3 4 (5) 6 7 8 9 10)

まとめ

  • REPL起動は\rr
  • interactionモードに入るには\i
  • ()の対応は自動的に保持される
  • ()の移動は<Leader><<Leader>>
  • ()の削除は<Leader>S
  • ()の分解、結合は<Leader>O<Leader>J
  • ()で囲むには<Leader>W

自分の環境のせいだと思うが<Leader><は機能しないし、ほかのものもたまに動かなくなる。

コメント

タイトルとURLをコピーしました