surround.vimによる囲み文字の変更・削除・追加
よく忘れるので、確認のついでにまとめたもの。
変更
cs
で始めると、囲っている文字もしくはタグを変更する。
cs"'
ダブルクォート("
)をシングルクォート('
)に変更
囲まれている文字列のどこかにカーソルがある状態で。
// before
"Hello world"
// after
'Hello world'
cs'<q>
シングルクォート('
)をqタグに変更
囲まれている文字列のどこかにカーソルがある状態で。
// before
'Hello world'
// after
<q>Hello world</q>
cst"
qタグをダブルクォート("
)に変更
囲まれている文字列のどこかにカーソルがある状態で。
// before
<q>Hello world</q>
// after
"Hello world"
削除
ds
で始めると、囲っている文字もしくはタグを削除する。
ds"
ダブルクォート("
)を削除
囲まれている文字列内にカーソルがある状態で。
// before
"Hello world"
// after
Hello world
追加
ys
で始めると、指定した文字もしくはタグで囲む。
ys
のあとに、囲む対象、囲みたい文字もしくはタグ、の順で指定する。
ysiw]
1単語を角括弧([]
)で囲む。括弧と単語の間にスペースは入らない。
カーソルがHelloの文字のどこかにある状態で。
// before
Hello world
// after
[Hello] world
iw
は、単語(ホワイトスペースは含まない)を表すテキストオブジェクト。
yss(
カーソルのある行を丸括弧(()
)で囲む。括弧と行頭・行末の間にスペースが入る。
// before
Hello world
// after
( Hello world )
ビジュアルモードでS<p>
指定した範囲の外側をpタグで囲む。
文字単位(v
)で指定した場合
// before
Hello world
// after
<p>Hello world</p>
行単位(V
)で指定した場合
// before
Hello world
// after
<p>
Hello world
</p>
開き括弧と閉じ括弧の違い
囲み文字の指定で括弧を指定する場合、開き括弧か閉じ括弧でその対象が異なる。
- 開き括弧(
({[
): 対応する括弧と半角スペースが対象 - 閉じ括弧(
)}]
): 対応する括弧のみ対象
開き括弧を指定して削除 ds(
// before
"( Hello world )"
// after
"Hello world"
括弧と囲まれた文字との間にある半角スペースも削除される。
なお、括弧と囲まれた文字との間に複数の半角スペースがあっても、まとめて削除される。
// before
"( Hello world )"
// after
"Hello world"
閉じ括弧を指定して削除 ds)
// before
"( Hello world )"
// after
" Hello world "
対応する括弧のみ削除される。半角スペースはそのまま。