Как вы автоматически удаляете окно предварительного просмотра после автозаполнения в Vim?
Я использую omnifunc=pythoncomplete
. Когда автозаполнение слова (например, os.<something>
), я получаю список подходящих членов и функций класса, как и ожидалось, а также окно предварительного просмотра буфера с документацией о выбранном элементе или функции. Это здорово, но после выбора функции, которую я хочу, окно предварительного просмотра остается.
Я могу избавиться от него с помощью :pc
, но мне бы хотелось, чтобы он просто автоматически исчезал после того, как я выбрал свою функцию, a la Eclipse. Я играл с completeopt
, но безрезультатно.
Ответы
Ответ 1
Поместите в 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
Ответ 2
Несмотря на то, что уже есть принятый ответ, я нашел это непосредственно из документов, которые будут работать для любого плагина, который имеет эту проблему.
autocmd CompleteDone * pclose
Ответ 3
Если у вас установлен плагин supertab, есть опция supertab-closepreviewonpopupclose
.
Добавьте в свой .vimrc следующее:
let g:SuperTabClosePreviewOnPopupClose = 1
Ответ 4
Я не знаю, как закрыть его автоматически, но вы можете ввести
: pclose
чтобы закрыть предварительный просмотр с нуля вручную.
Ответ 5
Я знаю, что этот вопрос очень старый, но после нескольких дней поиска "чистого" решения я просто нашел автозапуск FullDone, который выполняет эту работу:
au CompleteDone * pclose
Ответ 6
Вы можете использовать следующие сопоставления, чтобы определенные клавиши пытались закрыть окно предварительного просмотра.
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
Ответ 7
Вы можете ввести его в .vimrc
:
set completeopt-=preview