読者です 読者をやめる 読者になる 読者になる

Vim - 補完時に表示されるプレビューウィンドウを消す

vim

普段neocomplcacheを使っています。
最近Pythonを書いていて知ったのですが、補完時にプレビューウィンドウが開きます。

こんな状態から

1

. を入力して補完が始まるとこうなります。

2

このプレビューウィンドウ。

3

これが非常に邪魔臭くて消したかったので調べました。

completeoptとomnifunc

まずneocomplcacheは関係ありませんでした。
これはVim標準の機能で、:help completeopt に次のように書かれています。

入力モードでの補完|ins-completion|についてのオプションのコンマ区切りの リスト。サポートされている値は次の通り:

  menu        ポップアップメニューで補完候補を表示する。ポップアップメニ
       ューは、候補が2個以上あり、十分な数の色が使用できるときだ
       け表示される。|ins-completion-menu|を参照。

  menuone  候補が1つしかないときもポップアップメニューを使う。候補に
       ついて付加的な情報があるときに便利である。例えば、それがど
       のファイルに含まれているかなど。

  longest  候補の文字列の最長の共通部分だけを挿入する。メニューが表示
       されているならばCTRL-Lでさらに文字を挿入することができる。
       大文字・小文字が同一視されるかどうかは補完の種類による。バッ
       ファのテキストについてはオプション'ignorecase'が適用される。

  preview  現在選択されている候補についての付加的な情報をプレビューウ
       ィンドウに表示する。"menu"または"menuone"と組み合わせたと
       きのみ有効。

現在の設定を確認してみます。

:set completeopt
preview,menuone

previewが入っています。

今回のケースでいえば omnifunc が影響していたようで、ネオコンを無効化して同じようなコードにて <C-x><C-o> で再現しました。

ということで.vimrcに以下を追加して解決。

set completeopt=menuone

快適。

おまけ:ネオコンにて「プレビューを自動で閉じない」設定

標準ではこのプレビューは表示されると、補完確定後もウィンドウがそのまま残ります。
ネオコンを使っていると、確定後は自動でプレビューウィンドウが閉じられます。
ネオコンの設定により自動で閉じないようにすることもできます。

" vimrcに追加
let g:neocomplcache_enable_auto_close_preview = 0