2013-08-17

surround.vimことはじめ

surround.vimを導入した。
とりあえず、基本的な使い方をいくつかのブログ記事を参考にまとめておいた。

surround.vim概要

テキストを囲うモノを編集するプラグイン。 テキストオブジェクトの操作を強化する感じ。

インストール

NeoBundleを使った場合のインストール方法。以下の1行を.vimrcに追記。

NeoBundle 'tpope/vim-surround'

vimを起動し、:NeoBundleInstallコマンドの実行でインストール完了。

surrond.vimの使い方2種類

  1. 既に囲んでいるモノへの操作
  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>

参考