この記事はVim Advent Calendar 2012 : ATND 79日目の記事になります。
78日目は@raa0121のLingrのBot「VimAdv」を作ったでした。
今回は、Vimの意外と知られていない正規表現\%
を紹介したいと思います。
任意にマッチするアトム列 \%[]
Vimの各コマンドは省略名をもっているので、これは必須の正規表現かなっと思います。
echo matchstr("fun", 'fu\%[nction]')
" 'fun'
" `\%[]`を使わないとこう書かなければいけない!!
echo matchstr("fun", 'fu\(n\(c\(t\(i\(o\(n\?\)\?\)\?\)\?\)\?\)\?\)\?')
" 'fun'
部分正規表現としてカウントされないグループ化 \%(\)
これはmatchlist()には結構必須で、matchlist()は10個以上のグループ化をしている
パターンを渡すとエラーになってしまいます。
echo matchlist("function", 'fu\(nc\)t\(io\)n')
" ['function','nc','io','','','','','','','']
echo matchlist("function", 'fu\%(nc\)t\(io\)n')
" ['function','io','','','','','','','']
以上、「%...は結構便利だよ」という話でしたw。
実はこれはujihisa.vim#3で話そうかと思ったやつですw。
スライドにしたら4,5枚になったのに記事にすると少なすぎる...(すみません)