如何在Vim中自动完成后自动删除预览窗口?
我使用的是如何在Vim中自动完成后自动删除预览窗口?,vim,autocomplete,preview,Vim,Autocomplete,Preview,我使用的是omnifunc=pythoncomplete。当自动完成一个单词(例如,os.)时,我会得到符合条件的类成员和函数的列表,正如预期的那样,还有一个包含所选成员或函数文档的scratch buffer预览窗口。这很好,但是在选择了我想要的功能之后,预览窗口仍然存在 我可以用:pc摆脱它,但我希望它在我选择了我的函数la Eclipse之后自动消失。我已经使用了completeopt,但是没有用。您可以加入以下映射,让某些键尝试关闭预览窗口 inoremap <space>
omnifunc=pythoncomplete
。当自动完成一个单词(例如,os.
)时,我会得到符合条件的类成员和函数的列表,正如预期的那样,还有一个包含所选成员或函数文档的scratch buffer预览窗口。这很好,但是在选择了我想要的功能之后,预览窗口仍然存在
我可以用
:pc
摆脱它,但我希望它在我选择了我的函数la Eclipse之后自动消失。我已经使用了completeopt
,但是没有用。您可以加入以下映射,让某些键尝试关闭预览窗口
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>
将以下内容放入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
如果已安装supertab插件,则有一个名为
supertab ClosePreviewWonPopupClose
的选项
将以下内容放入.vimrc中:
let g:SuperTabClosePreviewOnPopupClose = 1
我不知道如何自动关闭它,但你可以键入 :pclose
手动关闭草稿预览 尽管已经有了一个公认的答案,但我还是直接从文档中找到了这个答案,这将适用于任何存在此问题的插件
autocmd CompleteDone * pclose
我知道这个问题很老了,但在寻找“干净”的解决方案几天后,我发现了完成这项工作的CompleteDone autofunction:
au CompleteDone * pclose
您可以在
.vimrc
中键入:
set completeopt-=preview
好问题-我停止使用omnicomplete,因为它让那个愚蠢的缓冲区打开了。这似乎打破了我的命令编辑窗口(q:或q/)。我又加了一张支票:&&bufname(“%”)=“[命令行]”同时指向lines@Ben:哇,我怎么没有看到你在发布之前的评论。我从那里得到的答案是将
pclose
更改为静音!pclose
。多亏了gotgenes和pydave。你的把戏很管用!我支持这个答案,因为它暗示YouCompleteMe插件有一个g:ycm\u autoclose\u preview\u window\u after\u insert选项。@duleshi正是我想要的@我很高兴能帮上忙!这就是我留下评论的原因!谢谢@duleshi这正是我所需要的<7.4版中添加了代码>CompleteDone。此方法应优先于CursorMovedI
/InsertLeave
方法。@PeterRincker我希望窗口在完成时不要关闭(因为我想在输入参数时查看文档),因此,我将使用InsertLeave
行。这是令人惊讶的:)你能解释更多吗?这实际上并没有回答问题,这可以防止预览窗口弹出,完成后不会被取消。请注意,OP确实表示他们也尝试了“completeopt”。
set completeopt-=preview