Vimの正規表現では常に\vを使うことにする

vim正規表現は以下のような変なクセがある。

:echo match('aaa', 'a*') => 0 (マッチする)
:echo match('aaa', 'a+') => -1 (マッチしない)

このような結果になるのは、*はエスケープが不要だが、+はエスケープが必要なため。

:echo match('aaa', 'a\+') => 0

とすればマッチする。

エスケープが必要なのか不要なのか、メタキャラクタによってまちまちで分かりにくい。
また、magicというオプションによっても、挙動が変わる。

このややこしさは、\vというメタキャラクタを使うと解決できる。

:echo match('aaa', '\va+') => 0

このように正規表現の最初に\vを付加すると、あらゆるメタキャラクタがエスケープ無しで効果を発揮するようになる。

詳細は以下のヘルプで参照

:help magic