在Vim自动完成后,如何自动删除预览窗口?

我正在使用omnifunc=pythoncomplete 。 当自动完成一个单词(例如, os.<something> )时,我会得到符合条件的类成员和函数列表,以及一个带有关于所选成员或函数的文档的暂存缓冲区预览窗口。 这很好,但是在select了我想要的function之后,预览窗口仍然存在。

我可以用:pc来摆脱它,但是我希望它只是在我select了我的function,Eclipse后自动消失。 我已经玩完了,但无济于事。

在你的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 

即使已经有一个被接受的答案,我直接从文档中find了这个问题的任何插件。

 autocmd CompleteDone * pclose 

如果安装了supertab插件,则有一个选项,称为supertab-closepreviewonpopupclose

将以下内容放在.vimrc中:

 let g:SuperTabClosePreviewOnPopupClose = 1 

我不知道如何自动closures它,但是你可以input

:函数,pclose

手动closures临时预览。

我知道这个问题是非常古老的,但在寻找一个“干净的”解决scheme的几天后,我发现完成这项工作的CompleteDone自动function:

 au CompleteDone * pclose 

您可以引用以下映射以使某些键试图closures预览窗口。

 inoremap <space> <CO>:wincmd z<CR><space> inoremap ( <CO>:wincmd z<CR>( inoremap ) <CO>:wincmd z<CR>) inoremap , <CO>:wincmd z<CR>, inoremap <CR> <CO>:wincmd z<CR><CR> inoremap <esc> <esc>:wincmd z<CR> 

在插入模式下完成后,还可以使用自动命令来closures预览窗口:

 augroup GoAwayPreviewWindow autocmd! InsertLeave * wincmd z augroup end 

你可以在.vimrc

 set completeopt-=preview