💆
Vimのビルトイン補完中にfuzzy matchの設定を切り替える
Vim 9.1.0463より、'completeopt'
オプションにfuzzy
が設定できます。
Neovimもリリース0.10.1にはこのパッチが取り込まれているはずです。
fuzzy matchを使用すると、たとえば、zenn_article
という候補を、zena
で選択できるようになります。特に記号や数字を正確に入力しなくて良い点が便利です。
ただ、fuzzy補完はときどきマッチしてほしくない文字列にマッチしてしまうこともあるので、必要に応じて切り替えられると良いと思いました。
ということで、以下がinsert mode中にfuzzyを切り替える設定です。<c-g><c-f>
にマッピングしています。オプションを切り替えただけでは補完候補が更新されないので、適当な文字を入力して即削除(a<bs>
)することで候補を更新しています。
場合によっては一つもマッチせずpumが消えることがあるので、pumvisible()
は条件に含めていません。
inoremap <expr> <c-g><c-f> &completeopt =~ 'fuzzy'
\ ? '<cmd>set completeopt-=fuzzy<cr>a<bs>'
\ : '<cmd>set completeopt+=fuzzy<cr>a<bs>'
<c-g><c-f>
でfuzzyの設定を切り替えている様子
なお、表示している辞書はこちらの記事で紹介したソート済み辞書です。
余談ですが、インサートモードの<c-g>
はけっこう空いているので、プレフィックスとして使いやすいです。
ビルトインの<c-g>...
はこれだけしかない
Discussion