vimでnon-greedyなマッチ

vimでnon-greedyなマッチを行うために正規表現を調べたのでメモ

non-greedyなマッチを使いたい場合のusecase
以下の行でクォーテーション毎にそれぞれマッチしたい場合

'hoge', 'fuga'

アスタリスクを使って書くと行頭から行末まで全体にマッチしてしまう

# greedy
/\v'.*' 
=> match "'hoge', 'fuga'"
# non-greedy
/\v'.{-}'  
=> match "'hoge'" and "'fuga'" separately

{}は繰り返し回数を指定する場合の正規表現の書き方だが、その頭にハイフンを付けることでnon-greedyという意味になる
例えば{-2,5}とすれば2~5回の繰り返し(non-greedy)を表せる

ちなみに\vを置くことでalphabet, number, underscore以外の文字を特殊な意味で使う場合にescapeする必要がなくなる
\Vとすれば逆にすべての文字をescapeなしで文字通りのまま扱える
cf. :h magic

実践Vim 思考のスピードで編集しよう!

実践Vim 思考のスピードで編集しよう!