2013年12月09日(月) [長年日記]
■ [vim] Unite bufferでignorecaseを有効にする
Vimのunite.vimプラグインを「:Unite buffer」で起動したときに、フィルタリングで大文字小文字を無視する設定にする方法がずーっと分からなかったのだけれど、今日分かったのでメモ。
.vimrcに
call unite#custom#profile('source/buffer', 'ignorecase', 1)
と書けばいいみたい。
unite.vimの昔のバージョンでは「let g:unite_enable_ignore_case = 1」と書いておけばよくて簡単だったのだけれど、その後設定方法が色々変わっていって、そのうち設定方法が分からなくなってしまっていた。少し前は「call unite#set_buffer_name_option('default', 'ignorecase', 1)」と書いていて、でもこれだとignorecaseにならなかった。そして今日unite.vimをバージョンアップしたらunite#set_buffer_name_option()が廃止されていたので、ちょっと調べてみた。
マニュアルでignorecaseを検索すると「unite#custom#profile({profile-name}, {option-name}, {value})」という関数を呼べばよさそうなことは分かる。でも、profile-nameに何を指定すればいいのかが分からなかった。profileって何?'buffer'とか'buffers'を指定してみたのだけれど、これだとダメだった。
vimスクリプトは全然読めないのだが、unite.vimのソースコードを調べてautoload/unite/candidates.vimの最初の方にある
let &ignorecase = \ unite#custom#get_profile(unite.profile_name, 'ignorecase')
というコードに目を付け、ここに「echo unite.profile_name」という行を追加し、「:verbose Unite buffer」を実行したら「source/buffer」と表示されたのでこれをprofile-nameに指定したら動作した。