surround.vimの使い方

surround.vimとは

プログラミングをしている時に, あとから括弧を付けたくなったり, 括弧の種類を変えたくなることって結構あったりすると思います. そんな時に大活躍するのが, surround.vimです. 指定した範囲を括弧で囲ったり, すでにある括弧を編集したりできます.

surround.vimのインストール

NeoBundleを使ってのインストールについてです. .vimrcに以下の一文を追加し, 保存します.

NeoBundle 'surround.vim'
            

その後, 以下の2つのコマンドを打ちましょう.

:source ~/.vimrc
:NeoBundleInstall
            

surround.vimの操作方法

Hello World!
            

まずはこの文の全体に'(シングルクォート)をつけます。方法は、yss'と打ちます。もちろんノーマルモードの状態で打ちます。カーソルは囲いたい文の上ならどこでもいいです.

'Hello World!'
            

になりました。次は'(シングルクォート)を消します。ds'と打ちます。

Hello World!
            

元に戻りました。

次は、ビジュアルモードで囲んだ部分を'(シングルクォート)で囲って見ましょう。まずH(HelloのH)の上でvを押します。その後l(える)を押して、oの上までカーソルをずらします。カーソルがoの上に来たら、S'(Sは大文字!)を押します。

'Hello' World!
            

こうなりました。では、次は'で囲まれた部分を消してみましょう。カーソルが'Hello'の上のどこかにある状況で、di'とうてば、

'' World!
            

みたいになります。
ではちょっと戻って、

'Hello' World!
            

という状態にしましょう。今から、'(シングルクォート)"(ダブルクォート)に変えます。カーソルが'Helloの上の何処かにある状態で、cs'"と押します。

"Hello" World!
            

となりました。

あと、一つの単語だけを'で囲みたい場合は、ysiw'とかもできます。たとえば上の文の状態のときに、Helloの上にカーソルを持ってきて、ysiw'とすると

"'Hello'" World!
            

となります。

基本操作はこんな感じです。最後に、表にまとめます。

コマンド 動作
ds' 文を囲んでいる ' を消す
di' ' で囲まれた部分を消す
cs'" ' を " に変更
ci' ' で囲まれた部分を消して, インサートモードに入る
S' ビジュアルモードで選択した部分を ' で囲む
yss' 文を ' で囲む
ysiw' カーソルがある単語を ' で囲む

'の部分はいろいろ変えられます。タグを付けたいときは、'の代わりにtとうつと、コマンド入力欄にフォーカスが移動して、<と書いてある状態になります。なのでそこでpとおして、enterを押すと、

<p>Hello World!</p>
            

となります。
タグを消したい場合は、dstとすれば消えます。

ちなみに、パッと覚えにくかったので、覚えるときは、
ds ・・・ d(delete)s(surround)
di ・・・ d(delete)i(inside)
cs ・・・ c(change)s(surround)
ci ・・・ c(change)i(inside)
yss ・・・y(yank)s(surround)s(sentence)
ysiw ・・・ y(yank)s(surrond)iw(inner word)
みたいに覚えてます。ホントは違うかもしれないけど、覚えやすかったので(笑)

[追記] 基本的にsが付かないコマンドで操作されるものは, Vimのテキストオブジェクトという機能みたいです. ただ, とても便利なので, このまま記載しておくことにします.