メモの日々


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に指定したら動作した。