読者です 読者をやめる 読者になる 読者になる

MogLog

メモというか日記というか備忘録というか

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'