我正在使用omnifunc=pythoncomplete
。当自动完成一个单词(例如,os.<something>
)时,我会按照预期获取符合条件的类成员和函数的列表,以及包含关于所选成员或函数的文档的暂存缓冲区预览窗口。这很好,但是在选择我想要的功能后,预览窗口仍然存在。如何在Vim中自动完成后自动删除预览窗口?
我可以用:pc
摆脱它,但我希望它只是在我选择了我的功能,Eclipse后自动消失。我玩过completeopt
,但无济于事。
我正在使用omnifunc=pythoncomplete
。当自动完成一个单词(例如,os.<something>
)时,我会按照预期获取符合条件的类成员和函数的列表,以及包含关于所选成员或函数的文档的暂存缓冲区预览窗口。这很好,但是在选择我想要的功能后,预览窗口仍然存在。如何在Vim中自动完成后自动删除预览窗口?
我可以用:pc
摆脱它,但我希望它只是在我选择了我的功能,Eclipse后自动消失。我玩过completeopt
,但无济于事。
把你的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
你可以在下面的映射中使某些键试图关闭预览窗口。
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
如果你有安装supertab插件后,有一个选项叫做supertab-closepreviewonpopupclose
。
在.vimrc里加上以下内容:
let g:SuperTabClosePreviewOnPopupClose = 1
我不知道如何自动关闭它,但你可以键入
:pclose函数
关闭手动划分预览。
即使已经有一个被接受的答案,我直接从文档中找到了这个文档,这个文档可以用于任何有这个问题的插件。
autocmd CompleteDone * pclose
'CompleteDone'是在7.4版本中添加的。这个方法应该比'CursorMovedI' /'InsertLeave'方法更受欢迎。 – 2015-01-05 21:49:34
@PeterRincker我更喜欢窗口在完成时不关闭(因为我想查看文档,因为我正在输入参数),所以我将使用'InsertLeave'行。 – DBedrenko 2015-12-07 10:41:23
我知道这个问题已经很老了,但找一个“干净”的解决方案天后我刚刚发现的CompleteDone自动功能,没有工作:
au CompleteDone * pclose
您可以键入在.vimrc
:
set completeopt-=preview
请你仔细解释一下吗? – Wtower 2016-04-28 07:10:49
这实际上并没有回答这个问题,这使得预览窗口不会弹出,完成后不会被解雇。请注意,OP确实表示他们也尝试了“全面启用”。 – nerdwaller 2016-06-23 03:26:59
好问题 - 我停止使用omnicomplete,因为它使这个愚蠢的缓冲区打开。 – 2010-06-23 20:35:42