2010-06-23 85 views
86

我正在使用omnifunc=pythoncomplete。当自动完成一个单词(例如,os.<something>)时,我会按照预期获取符合条件的类成员和函数的列表,以及包含关于所选成员或函数的文档的暂存缓冲区预览窗口。这很好,但是在选择我想要的功能后,预览窗口仍然存在。如何在Vim中自动完成后自动删除预览窗口?

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

+5

好问题 - 我停止使用omnicomplete,因为它使这个愚蠢的缓冲区打开。 – 2010-06-23 20:35:42

回答

100

把你的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 
+0

工作就像一个魅力。谢谢! – 2010-06-24 17:15:50

+2

这似乎打破了我的命令编辑窗口(q:或q /)。我在两行添加了另一个检查:&& bufname(“%”)!=“[Command Line]” – Ben 2012-04-14 20:52:47

+2

@Ben:Woah在发布[这个问题]之前,我怎么看不到您的评论(http://stackoverflow.com/ q /79125分之11733388)。我从那里得到的答案是将'pclose'改成'silent! pclose'。 – idbrii 2012-07-31 05:27:42

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 
17

如果你有安装supertab插件后,有一个选项叫做supertab-closepreviewonpopupclose

在.vimrc里加上以下内容:

let g:SuperTabClosePreviewOnPopupClose = 1 
+15

我upvote这个答案,因为它暗示YouCompleteMe插件有一个g:ycm_autoclose_preview_window_after_insertion选项。 – duleshi 2014-07-16 08:57:34

+0

@duleshi正是我所期待的! – 2014-11-08 07:30:43

+0

@AndyHayden很高兴能帮到你!这就是我留下的评论! – duleshi 2014-11-19 14:35:51

7

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

:pclose函数

关闭手动划分预览。

60

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

autocmd CompleteDone * pclose 
+11

'CompleteDone'是在7.4版本中添加的。这个方法应该比'CursorMovedI' /'InsertLeave'方法更受欢迎。 – 2015-01-05 21:49:34

+7

@PeterRincker我更喜欢窗口在完成时不关闭(因为我想查看文档,因为我正在输入参数),所以我将使用'InsertLeave'行。 – DBedrenko 2015-12-07 10:41:23

2

我知道这个问题已经很老了,但找一个“干净”的解决方案天后我刚刚发现的CompleteDone自动功能,没有工作:

au CompleteDone * pclose 
0

您可以键入在.vimrc

set completeopt-=preview 
+0

请你仔细解释一下吗? – Wtower 2016-04-28 07:10:49

+1

这实际上并没有回答这个问题,这使得预览窗口不会弹出,完成后不会被解雇。请注意,OP确实表示他们也尝试了“全面启用”。 – nerdwaller 2016-06-23 03:26:59