vimの正規表現

vim正規表現このページにまとめてあり、大変参考になる。
vimでプログラムを編集する際に注意していることをメモしておく。

角カッコ[]

対応している角カッコがあると正規表現として扱われる。
角カッコそのものを書くときはエスケープする。
対応するカッコ閉じはエスケープしなくていいようだ。

:s/[3]/[4]/g
before: int a[3]
 after: int a[[4]]

:s/\[3]/[4]/g
before: int a[3]
 after: int a[4]
後方参照

丸カッコを後方参照で使うときはエスケープしなければならない。
エスケープされた丸カッコで括った内容を、\1や\2などで参照できる。

:s/(\(.*\))/\1/g
before: "Snow (Hey Oh)"
 after: "Snow Hey Oh"
non-greedyなマッチング

*を使うと0回以上の繰り返しの最大マッチになる。
non-greedyにするには0回以上の繰り返しの最小マッチ\{-}を用いる。

:s/(3.*)/3/g
before: (1 2 (3 nil nil) 4)
 after: (1 2 3

:s/(3.\{-})/3/g
before: (1 2 (3 nil nil) 4)
 after: (1 2 3 4)
便利な記法

\<で単語の最初にマッチする。

:s/king/man/g
before: "The king is streaking."
 after: "The man is streaman."

:s/\<king/man/g
before: "The king is streaking."
 after: "The man is streaking."

Perl正規表現が書けるeregex.vimを使ったほうが良いかもしれない。