0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Spacemacsのlispステートについて

Last updated at Posted at 2020-08-16

はじめに

この記事はspacemacsのlispステートについて(割と自分向けに)書いた記事です。
lispを日常的に書くのにlisp-stateに慣れなければ、ということで調べました。(あと元vimmerにはpareditのキーバインドが厳しい)

キーバインド

トグル

キー 動作
. lisp-stateとnormal-stateをトグルする

normal-stateでSPC-k-[]でlisp-stateに入ることができます。

繰り返し

キー 動作
n [] n回 []を繰り返す

例えば10 sであれば10回後方のS式をslurpします。

移動

キー 動作
h 前方のシンボルに移動
l 後方のシンボルに移動
k 前の"("に移動
j 後ろの")"に移動
0 カーソル位置のS式の"("に移動(外側に移動しない)
$ カーソル位置のS式の")"に移動(外側に移動しない)
% 0と$を繰り返す

slurp/barf

キー 動作 from to
s 飲み込む カーソルのあるS式の外側1つ後ろ カーソルのあるS式の最後尾
S 飲み込む カーソルのあるS式の外側1つ前 カーソルのあるS式の先頭
b 吐き出す カーソルのあるS式の外側1つ後ろ カーソルのあるS式の最後尾
B 吐き出す カーソルのあるS式の外側1つ前 カーソルのあるS式の先頭
a 飲み込む カーソルのあるS式の外側1つ前 カーソル前方

lispを書くときに必要な2つ道具です。
slurpは飲み込み、barfは吐き出しと言われます。
前方後方のシンボルやカッコをカーソルのあるカッコに飲み込み/吐き出しします。
queueやstackのpushやpopというとわかるかもしれません。
動かしてみるのが一番わかりやすいと思います(雑)。

insert-state

キー 動作
i カーソル位置でinsert-stateに移行
I カーソルのあるS式前方でinsert-stateに移行
( カーソルのあるS式の前に()を挿入後insert-stateに移行
) カーソルのあるS式の後に()を挿入後insert-stateに移行

なおinsert-stateを抜けると必ずnormal-stateになります。

visual-state

キー 動作
v カーソル位置でvisual-stateに移行
V カーソル位置でvisual-line-stateに移行
C-v カーソル位置でvisual-block-stateに移行

囲う

キー 動作
w カーソルのS式(そうでない場合は1つ前)を()で囲う
W カーソルのS式(そうでない場合は1つ前)の()を外す

yank/paste

キー 動作
y カーソル位置にある文字をyank
p カーソル位置にpaste
P カーソル位置の後方にpaste

pasteはシンボルを感知しません。
つまりカーソル位置がシンボルにあった場合カーソル位置に挿入されシンボルはカーソル位置から真っ二つにされます。

delete

キー 動作
ds 後方にあるシンボルを消去する
Ds 前方にあるシンボルを消去する
dw カーソル位置からシンボルの終端までを消去する
Dw カーソル位置からシンボルの前方までを消去する
dx カーソル位置の式を消去する
Dx カーソル前方の式を消去する
deleteは消すだけでyankはされません。

その他

キー 動作
t カーソル位置と前方のカッコやシンボルを入れ替える
: コマンドの入力
c ?

convoluteは説明を読んでも理解ができませんでした...

終わりに

使って理解するしかないと思います。意識せずかけるようになりたいですね...
各stateについてできることが色々あるので便利に使っていきたいです。
参考:
https://github.com/syl20bnr/evil-lisp-state

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?