Vim7用の、id:secondlifeオススメのプラグイン。これはたしかに便利。 ようは、テキストオブジェクトを操作できるプラグイン。
dsは、テキストオブジェクトの特定の文字列を削除する。例えば、以下の文章(*はカーソルの位置)
"Hello *world!"
で「ds"」と入力すると"が削除されて
Hello *world!
になる。括弧を入れると特別な挙動になっていて例えば、以下の文章(*はカーソルの位置)
if (($data ==* null)) {
で、「ds)」と入力すると自動的に対応する括弧の開始を見つけて
if ($data ==* null) {
となる。対応しているのは括弧だけじゃない。タグも対応してる。dsの中ではtがタグを表現する。以下の文章(*はカーソルの位置)
<div><span>vim7*</span></div>
で、「dst」と入力すると、
<div>vim7*</div>
というように、直近のタグを削除してくれる。便利すぎる。
"Hello *world!"
の時に、「di"」で
""
になる。これはtext-objectsの機能でプラグインは関係ない。
dsが削除ならcsはもちろん置換。dsは「あーすごいねえ」ってくらいだけど、csは「うおあ!」って感じ。 これもdsと同じで、普通の文字列の置換のほかに括弧は開き閉じを認識、タグはtでターゲットにできる。csはcstが一番便利な気分になれる。
テキストオブジェクトを使ったcsができる。
"Hello *world!"
に対して「ysiw)」とすると
"Hello (*world!)"
になる。iwは、inner word。iwで選択した結果に対してcsする。
カレントラインに対するcs。
インデントするys
インデントするyss
括弧やタグみたいに自分の好きな文字を入れる時は以下のようにする。
let g:surround_45 = "<?php
?>"
これは-が押されたときにPHPタグを指定できる。surround_45の45が-を示している。-のASCIIコードが45.-のASCIIコードを調べるには:echo char2nr("-"))とすればよい。