作業ノート

様々なまとめ、雑感など

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 "

対応する括弧のみ削除される。半角スペースはそのまま。

参考