Как автоматически удалить окно предварительного просмотра после автозаполнения в Vim? - PullRequest
89 голосов
/ 24 июня 2010

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

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

Ответы [ 7 ]

104 голосов
/ 24 июня 2010

Поместите в ваш 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
68 голосов
/ 24 сентября 2014

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

autocmd CompleteDone * pclose
18 голосов
/ 29 ноября 2012

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

Добавьте в ваш .vimrc следующее:

let g:SuperTabClosePreviewOnPopupClose = 1
7 голосов
/ 03 марта 2014

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

: pclose

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

2 голосов
/ 28 января 2015

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

au CompleteDone * pclose
1 голос
/ 24 июня 2010

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

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
0 голосов
/ 28 апреля 2016

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

set completeopt-=preview
...