プリセットされた設定を使うぶんには問題なかったんだけど、textobj-userで定義したテキストオブジェクトを surroundでも使おうとしたら不可能なことが発覚(削除処理決め打ちでカスタマイズの余地がない)。 どうしたものかと思って調査してたらvim-operator-surroundが良さそうだったので乗り換えた。
基本設定
1 2 3 4 5 6 7 8 |
|
基本機能使うならこれだけでよし。注意点としては、surround.vimとはキーストロークが変わる。
- surround.vim: cs{surround text objectを表す一文字}
- operator-surround: cs{テキストオブジェクトを選択する任意のキーストローク(a”, i’等)}
具体的には、surround.vimにおいて囲みの種類を変更するキーストロークcs'(
は、operator-surroundではcsa'(
になります。
削除も同様。
囲みを追加するysaw"
等については、変更なしでそのまま通る。
textobjの追加
新しいsurround text objを定義したいときは g:operator#surround#blocks
を設定します。
1 2 3 4 5 |
|
block
に囲み開始と終了のパターン、motionwise
は選択モード(文字、行、ブロック)、keys
は囲みを追加するときのキー。
囲みの追加は、パターンが正規表現だとうまく動きません。
正規表現を使用する場合、\V
前提なので注意。
surround.vimと比較してカスタマイズは大幅に楽になったので、乗り換える価値はあった。