Как автоматически удалить окно предварительного просмотра после автозаполнения в 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