Vim Advent Calendar 2013 167日目: 任意の正規表現パターンにマッチする textobj を書いた

[追記]

指摘されて初めて気づいたんですが textobj が operator になっていたので修正しました…。
素で間違えて恥ずかしい。


この記事は Vim Advent Calendar 2013 167日目の記事になります。
Vim Advent Calendar 書きたい人募集中です。
興味のある方は気軽にご参加ください。


さて、今回は任意の正規表現パターンにマッチする textobj プラグインをつくりました。
もともと『任意の正規表現パターンにマッチする textobj』は vim-textobj-user の機能として備わっているんですが、それをラップして から呼び出せるようにしました。

[使い方]

textobj#from_regexp#mapexpr({pattern}) を任意のキーに割り当てて使用します。

"
" 設定例
"
" 英数字と _ にマッチする範囲
omap <expr> i<C-w> textobj#from_regexp#mapexpr('\w\+')
xmap <expr> i<C-w> textobj#from_regexp#mapexpr('\w\+')

" URL にマッチする範囲
omap <expr> iul textobj#from_regexp#mapexpr('https\?:\/\/\S\+')
xmap <expr> iul textobj#from_regexp#mapexpr('https\?:\/\/\S\+')

" # と # の # を除いた間にマッチする範囲
omap <expr> i<A-s> textobj#from_regexp#mapexpr('#\zs.\{-}\ze#')
xmap <expr> i<A-s> textobj#from_regexp#mapexpr('#\zs.\{-}\ze#')


結構汎用性が高そうな気がする。
と、ここまで書いて色々と改良したくなってきた…。