web-dev-qa-db-de.com

Wie wird das Vorschaufenster nach der automatischen Vervollständigung in Vim automatisch entfernt?

Ich benutze omnifunc=pythoncomplete. Bei der automatischen Vervollständigung eines Words (z. B. os.<something>) erhalte ich erwartungsgemäß die Liste der in Frage kommenden Klassenmitglieder und Funktionen sowie ein Scratch-Puffer-Vorschaufenster mit Dokumentation zum ausgewählten Element oder der ausgewählten Funktion. Das ist großartig, aber nach Auswahl der gewünschten Funktion bleibt das Vorschaufenster erhalten. 

Ich kann es mit :pc loswerden, aber ich möchte, dass es automatisch verschwindet, nachdem ich meine Funktion ausgewählt habe, a la Eclipse. Ich habe mit completeopt herumgespielt, aber ohne Erfolg.

88
Ben Davini

Fügen Sie folgendes in Ihre Vimrc ein:

" 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

Obwohl es bereits eine akzeptierte Antwort gibt, habe ich dies direkt aus den Dokumenten gefunden, die für jedes Plugin funktionieren, das dieses Problem hat.

autocmd CompleteDone * pclose
67
Dan Bradbury

Wenn Sie das Supertab-Plugin installiert haben, gibt es eine Option namens supertab-closepreviewonpopupclose.

Fügen Sie Folgendes in Ihre .vimrc ein:

let g:SuperTabClosePreviewOnPopupClose = 1
17
Profpatsch

Ich kann nicht automatisch schließen, aber Sie können tippen 

: schließen

um die Scratch-Vorschau manuell zu schließen. 

7
Alan Dong

Ich weiß, dass diese Frage sehr alt ist, aber nach Tagen der Suche nach einer "sauberen" Lösung habe ich gerade die CompleteDone-Autofunktion gefunden, die diese Aufgabe erfüllt:

au CompleteDone * pclose
2
resi

Sie können die folgenden Zuordnungen hinzufügen, damit bestimmte Tasten versuchen, das Vorschaufenster zu schließen.

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>

Sie können das Vorschaufenster auch mit automatischen Befehlen schließen, wenn Sie den Einfügemodus abgeschlossen haben:

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

Sie können dies in den .vimrc eingeben:

set completeopt-=preview
0
messi