surround.vimを導入した。
とりあえず、基本的な使い方をいくつかのブログ記事を参考にまとめておいた。
surround.vim概要
テキストを囲うモノを編集するプラグイン。
テキストオブジェクトの操作を強化する感じ。
インストール
NeoBundleを使った場合のインストール方法。以下の1行を.vimrcに追記。
NeoBundle 'tpope/vim-surround'
vimを起動し、:NeoBundleInstallコマンドの実行でインストール完了。
surrond.vimの使い方2種類
- 既に囲んでいるモノへの操作
- 新たにテキストオブジェクトを囲む編集
基本コマンド
- s,S: surround
- d: delete
- c: change
- y: you
S: 選択中のテキストを任意の文字で囲う
対象の文字列:Hello World
実行コマンド |
実行結果 |
S' |
'Hello World' |
S" |
"Hello World" |
S[ |
[Hello World] |
S<p> |
<p>Hello World</p> |
S@ |
@Hello World@ |
HTMLタグとか括弧とか、対になるものはちゃんと対応したモノで囲んでくれる。
c: テキストを囲うモノを変更する(change surround)
※「*」の位置にカーソルがあるものとする
対象文字列:'He*llo World'
実行コマンド |
実行結果 |
cs'" |
"Hello World" |
対象文字列:<p>Hell*o World</p>
実行コマンド |
実行結果 |
cst<div> |
<div>Hello World</div> |
d: テキストを囲うモノを削除する(delete surround)
対象文字列:'He*llo World'
実行コマンド |
実行結果 |
ds' |
Hello World |
対象文字列:<p>Hell*o World</p>
実行コマンド |
実行結果 |
dst |
Hello World |
ys: 囲われるテキストの選択とテキストを囲う操作の同時実行(you surround)
対象文字列:'He*llo World'
実行コマンド |
実行結果 |
ysaw( |
'( Hello ) World' |
ysi' |
'( Hello World )' |
ysa' |
( 'Hello World' ) |
対象文字列: a = Array.new *foo, bar
実行コマンド |
実行結果 |
ys$) |
a = Array.new *( foo, bar ) |
これをフルで使うには、テキストオブジェクトをおさらいする必要がありそう。
yssコマンドで行全体がターゲットになる
対象文字列: f*oo bar baz
実行コマンド |
実行結果 |
yss' |
'foo bar baz' |
<C-G>
: インサートモードでsurround.vimを使う
実行コマンド |
実行結果 |
<C-G>s<div> |
<div>*</div> |
参考