textobj-context をつくった

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


少し前になるんですが、Shougo さんと共同で context_filetype.vim というプラグインを作成しました。


これは何をするプラグインかというと

python << EOF

print "hello, python world"

EOF


のようなコードからそのコンテキストの範囲(python << EOF 〜 EOF の間)やその filetype を取得する為のライブラリプラグインになります。
上記の場合だと if_python の中にカーソルがあるとその範囲なんかを取得する事が出来たりします。
元々は neocomplcache の機能の一部として実装されていたんですが、わたしが別のプラグインでも使用したかった為、独立してプラグイン化されました。
既に neocomplete.vim などではこのプラグインを使用するようになっています。

[textobj-context]

ライブラリとして作成したのでこのプラグイン単体では基本的に何も行わないのですが、それだとちょっと物足りないのでこのプラグインを使用した textobj を作成しました。

[インストール]

NeoBundle "osyo-manga/vim-textobj-context"
NeoBundle "Shougo/context_filetype.vim"

[マッピング]

omap ic <Plug>(textobj-context-i)
vmap ic <Plug>(textobj-context-i)

[vic]


こんな感じでコンテキストの範囲を選択する事が出来たりします。

[注意]

quickrun.vim(quickrun-op) と組み合わせて使用したい場合、quickrun.vim は現在の filetype を参照する為、うまく動作する事ができません。
ここら辺の問題に対しては次回の Vim Advent Calendar で詳しく説明したいと思います。