Как автоматически удалить окно предварительного просмотра после автозаполнения в Vim?

Я использую omnifunc=pythoncomplete. При автозаполнении слова (например, os.<something>), Я получаю список подходящих членов класса и функций, как и ожидалось, а также окно предварительного просмотра буфера с документацией о выбранном члене или функции. Это здорово, но после выбора функции, которую я хочу, окно предварительного просмотра остается.

Я могу избавиться от него с помощью :pc, но я бы хотел, чтобы он автоматически исчез после того, как я выбрал свою функцию, a la Eclipse. Я играл с тобой. с completeopt но безрезультатно.

7 ответов


поместите в 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

хотя уже есть принятый ответ, я нашел это непосредственно из документов, которые будут работать для любого плагина, у которого есть эта проблема.

autocmd CompleteDone * pclose

Если у вас установлен плагин supertab, есть опция supertab-closepreviewonpopupclose.

поместите следующее в свой .vimrc:

let g:SuperTabClosePreviewOnPopupClose = 1

Я не знаю, как закрыть его автоматически, но вы можете ввести

:pclose

чтобы закрыть предварительный просмотр вручную.


Я знаю, что этот вопрос очень старый, но после нескольких дней поиска "чистого" решения я только что нашел Автофункцию CompleteDone, которая выполняет эту работу:

au CompleteDone * pclose

вы можете добавить следующие сопоставления, чтобы некоторые клавиши попытались закрыть окно предварительного просмотра.

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

Вы можете ввести, что в .vimrc:

set completeopt-=preview