web-dev-qa-db-fra.com

Comment supprimez-vous automatiquement la fenêtre de prévisualisation après l'auto-complétion dans Vim?

J'utilise omnifunc=pythoncomplete. Lorsque vous remplissez automatiquement un mot (par exemple, os.<something>), je reçois la liste des membres de classe et des fonctions éligibles, comme prévu, ainsi qu'une fenêtre d'aperçu du tampon de travail avec une documentation sur le membre ou la fonction sélectionné. C'est formidable, mais après avoir sélectionné la fonction que je veux, la fenêtre d'aperçu reste affichée. 

Je peux m'en débarrasser avec :pc, mais j'aimerais qu'il disparaisse automatiquement une fois ma fonction sélectionnée, à la mode Eclipse. J'ai joué avec completeopt mais en vain.

88
Ben Davini

Mettez ce qui suit dans votre 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
102
gotgenes

Même s'il existe déjà une réponse acceptée, je l'ai trouvée directement dans la documentation, ce qui fonctionnera pour tous les plug-ins présentant ce problème.

autocmd CompleteDone * pclose
67
Dan Bradbury

Si vous avez le plugin supertab installé, il existe une option appelée supertab-closepreviewonpopupclose.

Mettez ce qui suit dans votre .vimrc:

let g:SuperTabClosePreviewOnPopupClose = 1
17
Profpatsch

Je ne sais pas comment le fermer automatiquement, mais vous pouvez taper 

: pclose

pour fermer l'aperçu du scratch manuellement. 

7
Alan Dong

Je sais que cette question est très ancienne, mais après des jours de recherche d’une solution "propre", je viens de trouver la fonction automatique CompleteDone qui fait le travail:

au CompleteDone * pclose
2
resi

Vous pouvez ajouter les mappages suivants pour que certaines clés tentent de fermer la fenêtre d'aperçu.

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>

Vous pouvez également utiliser des autocommandes pour fermer la fenêtre d’aperçu lorsque vous avez terminé en mode insertion:

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

Vous pouvez taper cela dans le .vimrc:

set completeopt-=preview
0
messi