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

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

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

89
задан Mateusz Piotrowski 13 April 2017 в 10:21
поделиться

2 ответа

Поместите следующее в ваш 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
104
ответ дан 24 November 2019 в 07:15
поделиться

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

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
1
ответ дан 24 November 2019 в 07:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: