Vim スクリプトの補完候補に補足情報をつけたい


はじめに

Vim スクリプトの complete() 関数による補完候補について調べています。

そこで、補完候補を選択したときに入力される文字列とは別に、補完候補に表示される情報に補足情報を付ける方法がないかを調べてみました。

tl;dr

補完候補となる配列の各要素を、辞書型のデータで定義すればできました。
以下のような形です。

inoremap <F8> <C-R>=MyComplete()<CR>
func! MyComplete()
  call complete(col('.'), [
\ {'word': '1st', 'abbr': '1st:', 'menu': 'first element'},
\ {'word': '2nd', 'abbr': '2nd:', 'menu': 'second element'},
\ {'word': '3rd', 'abbr': '3rd:', 'menu': 'third element'}])
  return ''
endfunc

上記を設定し、インサートモードで <F8> キーで押し、補完を表示すると以下のようになります。

以下のように表示されていることがわかると思います。

  • 入力された文字: 1st
  • 補完候補の最初の表示: 1st:
  • 補完候補の補足: first element

辞書型のキーについて

補完候補の各要素に指定するキーの用途は以下のとおりです。他にも使えるキーがありますが、Vim のマニュアル に載っています。

キー 用途
word 挿入されるテキスト。必須
abbr "word" の略。これが空でなければ、メニューで "word" の代わりに表示される。
menu ポップアップメニューにおける追加情報。"word" または "abbr" の後に表示される。

おわりに

補完の候補に補足情報も追加できることがわかってよかったです。より便利に使えそうです。

参考