Posted at

「Vimの正規表現`\%`は結構便利だよ」という話

More than 5 years have passed since last update.

この記事はVim Advent Calendar 2012 : ATND 79日目の記事になります。

78日目は@raa0121Lingrの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枚になったのに記事にすると少なすぎる...(すみません)