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

时间:2010-06-23 20:31:58

标签: vim autocomplete preview

我正在使用omnifunc=pythoncomplete。当自动填充单词(例如os.<something>)时,我会按预期获得符合条件的类成员和函数的列表,以及带有关于所选成员或函数的文档的临时缓冲区预览窗口。这很棒,但在选择了我想要的功能后,预览窗口仍然存在。

我可以用:pc摆脱它,但我希望它只是在我选择了我的函数之后自动消失,一个Eclipse。我玩过completeopt,但无济于事。

7 个答案:

答案 0 :(得分:104)

将以下内容放入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

答案 1 :(得分:68)

即使已经有一个已接受的答案,我直接从文档中找到了这个,这对任何有此问题的插件都有效。

autocmd CompleteDone * pclose

答案 2 :(得分:18)

如果您安装了supertab插件,则会有一个名为supertab-closepreviewonpopupclose的选项。

将以下内容放入.vimrc:

let g:SuperTabClosePreviewOnPopupClose = 1

答案 3 :(得分:7)

我不知道如何自动关闭它,但您可以输入

  

:pclose函数

手动关闭临时预览。

答案 4 :(得分:2)

我知道这个问题已经很老了,但经过几天寻找“干净”的解决方案后,我才找到了完成这项工作的CompleteDone自动功能:

au CompleteDone * pclose

答案 5 :(得分:1)

您可以使用以下映射来使某些键尝试关闭预览窗口。

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

答案 6 :(得分:0)

您可以在.vimrc

中输入该内容
set completeopt-=preview