EmadsのEvilで使えるプラグイン,evil-surround-modeを入れた。
このプラグインは,なにかをカッコなどで括る操作のショートカットを提供する。
ちなみにこれはsurround.vimをEvilにポートしたもの。なので実質surround.vimの解説になっているが…………
基本操作 (normal mode)
例では][
はカーソル,>
に続く行が入力
ys<word object><char>
-- 文字列を囲う
word objectをcharでくくる。
foo ][bar piyo > ysw" foo "bar" piyo
文字列をダブコでくくれた。この場合はysiw"
でもよいし,その方が単語中のどこでも使えるので便利そう。
foo ][bar piyo > ysw( foo ( bar ) piyo
カッコでくくると自動的にスペースが入れられるようだ。個人的にはうれしくない。
ちなみに閉じカッコを使うとスペースを入れない。
foo ][bar piyo > ysw) foo (bar) piyo
大変便利。ちなみに{}
も同じような挙動。
foo ][bar piyo > ysiw<a> foo <a>bar</a> piyo
くくる文字として<を入力するとXMLタグとして入力できるようになる。
ちなみに.
で再度くくることができる。この操作は他のほとんどのコマンドでも同様。
foo ][bar piyo > ysiw) foo ][(bar) piyo > l. foo (][(bar)) piyo
word objectならだいたいなんでも良いのでf
を使ったりできる。
foo ][bar piyo > ysfi) foo ][(bar pi)yo
cs<char1><char2>
-- 囲っている文字を書き換える
既にくくられているchar1をchar2に書き換える。
foo (][bar) piyo > cs(* foo *bar* piyo
ys
同様にタグも書ける。
foo (][bar) piyo > cs(<a> foo <a>bar</a> piyo
ds<char>
-- 囲っている文字を削除する
既に囲っている文字を削除できる。
foo (][bar) piyo > ds( foo bar piyo
ちなみに開きカッコと閉じカッコとでは,別の挙動をする。
foo ][bar piyo > ysiw( foo ][( bar ) piyo > ds( foo ][bar piyo // スペースも含めて削る。ちょうどysiw(の逆操作になる > u foo ][( bar ) piyo > ds) foo bar piyo // ysiw)の逆操作なので,スペースは削られない
タグを削るときはdst
を使う。
foo ][ bar piyo > ysiw<a> foo ][<a>bar</a> piyo >fbdst foo bar piyo
yss<char>
-- 行全体をくくる
sを重ねることで行全体を表現しているらしい。
foo ][bar piyo > yss) ][(foo bar piyo)
基本操作 (visual mode)
ビジュアルモードだとあまりキーバインドで悩むことがない。
ここでは[]
を選択している記号とする。
S<char>
-- 選択している文字列を囲む
foo [bar] piyo > S" foo "bar" piyo
V
でvisual line modeになっているときは行の上下を囲むような挙動になる。
foo ][bar piyo > V [foo bar piyo] > S! ! foo bar piyo !
Sf
-- 関数の形式で囲む
見たほうがわかりやすいので例です。
][$foo > ve [$foo] > Sfscalar scalar($foo)
ちなみにマニュアルになかったがnormal modeではysiwfscalar
のようにys<word object>f
とすると使えた。
エイリアス
カッコでくくるときに指定する文字として,b
B
r
a
はそれぞれ)}]>
のエイリアスになっている。記号は指が遠いのでまあ覚えておくと便利かもしれない。
改行させる
ys
の代わりにyS
を,ビジュアルモードではS
の代わりにgS
を使うと,囲って改行される。
foo bar piyo > ySiw{ foo { bar }piyo
感想
ys
が微妙に覚えづらい。使いまくるしかない。S
は覚えやすい。
完