vim置換

  • 171
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

置換が超いい感じだったのでメモる

置換

:%s/"置換前"/"置換後"/

です。
これだと一行中で一番初めに当たったものしか置換されないので

:%s/"置換前"/"置換後"/g

とすると1行中に複数マッチしても置換されます。

頭に%と置くと今開いているファイルという意味になるので、

:1,100s/"置換前"/"置換後"/g

とすると1行から100行までと行を指定できます。
置換したい範囲をビジュアルモードで選択した後 : を打つと選択範囲ないを指定することもできます。

置換前の文字を流用

:%s/\("文字"\)/h(\1)/

とかすると\(\)内にある文字が流用でき、

 h("文字")

と言うように置換されます。

:%s/\(\) \(\) \(\)//

のように複数 " \(\) "があると、左から順に "\1  \2  \3" となります。

最小一致

vimの正規表現は最大一致になっています。

:%s/<.\{-}>//

とすると最小一致で文字を置換できます。
上の場合だと "< >"で括られているものが削除されます。

ちなみに最小一致なので、上の場合だと

<input value="<? echo $aa; ?>" type="text" name="aa" id="text">

のようなものがあった場合

<input value="<? echo $aa; ?>

までが判定されます。