web-dev-qa-db-ja.com

Vimでオートコンプリート後にプレビューウィンドウを自動的に削除するにはどうすればよいですか?

omnifunc=pythoncompleteを使用しています。 Word(例:os.<something>)をオートコンプリートすると、期待どおりに適格なクラスメンバーと関数のリストが表示され、選択したメンバーまたは関数に関するドキュメントを含むスクラッチバッファープレビューウィンドウが表示されます。これは素晴らしいことですが、必要な機能を選択した後、プレビューウィンドウは残ります。

:pcで削除できますが、関数、Eclipseを選択すると、自動的に消えます。 completeoptをいじってみましたが、役に立ちませんでした。

89
Ben Davini

以下をvimrcに追加します。

" If you prefer the Omni-Completion tip window to close when a selection is
" made, these lines close it on movement in insert mode or when leaving
" insert mode
autocmd CursorMovedI * if pumvisible() == 0|pclose|endif
autocmd InsertLeave * if pumvisible() == 0|pclose|endif
104
gotgenes

すでに受け入れられた回答がありますが、この問題を抱えているプラ​​グインで機能するドキュメントから直接見つけました。

autocmd CompleteDone * pclose
69
Dan Bradbury

スーパータブプラグインがインストールされている場合、supertab-closepreviewonpopupcloseというオプションがあります。

次を.vimrcに追加します。

let g:SuperTabClosePreviewOnPopupClose = 1
18
Profpatsch

自動的に閉じる方法はわかりませんが、入力できます

:pclose

スクラッチプレビューを手動で閉じます。

7
Alan Dong

私はこの質問が非常に古いことを知っていますが、「きれいな」解決策を探して数日後、私は仕事をするCompleteDone自動機能を見つけました:

au CompleteDone * pclose
2
resi

次のマッピングをスローして、特定のキーにプレビューウィンドウを閉じさせます。

inoremap <space> <C-O>:wincmd z<CR><space>
inoremap ( <C-O>:wincmd z<CR>(
inoremap ) <C-O>:wincmd z<CR>)
inoremap , <C-O>:wincmd z<CR>,
inoremap <CR> <C-O>:wincmd z<CR><CR>
inoremap <esc> <esc>:wincmd z<CR>

挿入モードが終了したら、オートコマンドを使用してプレビューウィンドウを閉じることもできます。

augroup GoAwayPreviewWindow
autocmd! InsertLeave * wincmd z
augroup end
1
too much php

.vimrcに入力できます:

set completeopt-=preview
0
messi