Jak automatycznie usunąć okno podglądu po autouzupełnianiu w Vimie?

Używam omnifunc=pythoncomplete. os.<something>), otrzymuję listę kwalifikujących się członków klasy i funkcji, zgodnie z oczekiwaniami, a także okno podglądu bufora magazynowania z dokumentacją wybranego członka lub funkcji. Jest to świetne, ale po wybraniu funkcji, którą chcę, okno podglądu pozostaje.

Mogę się go pozbyć za pomocą :pc, ale chciałbym, aby automatycznie zniknął po wybraniu mojej funkcji, a la Eclipse. Bawiłem się z completeopt ale do nic z tego.

Author: Mateusz Piotrowski, 2010-06-24

7 answers

Umieść w swoim 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
 101
Author: gotgenes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-06-24 04:00:25

Mimo, że istnieje już akceptowana odpowiedź znalazłem to bezpośrednio z dokumentów, które będą działać dla każdej wtyczki, która ma ten problem.

autocmd CompleteDone * pclose
 66
Author: Dan Bradbury,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-24 17:28:32

Jeśli masz zainstalowaną wtyczkę supertab, istnieje opcja o nazwie supertab-closepreviewonpopupclose.

Umieść następujące w swoim .vimrc:

let g:SuperTabClosePreviewOnPopupClose = 1
 17
Author: Profpatsch,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-29 17:01:54

Nie wiem jak zamknąć go automatycznie, ale można wpisać

: pclose

Aby ręcznie zamknąć podgląd zarysowania.

 7
Author: Alan Dong,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-03 06:01:41

Wiem, że to pytanie jest bardzo stare, ale po kilku dniach szukania "czystego" rozwiązania właśnie znalazłem CompleteDone autofunction, który wykonuje zadanie:

au CompleteDone * pclose
 2
Author: resi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-28 10:05:34

Możesz dorzucić następujące mapowania, aby niektóre klawisze próbowały zamknąć okno podglądu.

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>

Możesz również użyć poleceń autocomands, aby zamknąć okno podglądu po zakończeniu trybu wstawiania:

augroup GoAwayPreviewWindow
autocmd! InsertLeave * wincmd z
augroup end
 1
Author: too much php,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-06-24 02:28:53

Możesz wpisać w .vimrc:

set completeopt-=preview
 0
Author: messi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-28 07:10:37