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

Ben*_*ini 89 vim autocomplete preview

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

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

got*_*nes 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
Run Code Online (Sandbox Code Playgroud)

  • 这似乎打破了我的命令编辑窗口(q:或q /).我添加了另一个检查:&& bufname("%")!="[命令行]"到两行 (2认同)
  • @Ben:哇,在发布[这个问题]之前我怎么没看到你的评论(http://stackoverflow.com/q/11733388/79125).我从那里得到的答案是将'pclose'改为`沉默!pclose`. (2认同)

Dan*_*ury 69

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

autocmd CompleteDone * pclose
Run Code Online (Sandbox Code Playgroud)

  • 版本7.4中添加了`CompleteDone`.这种方法应优先于'CursorMovedI` /`InsertLeave`方法. (14认同)
  • @PeterRincker我更喜欢窗口不要在完成时关闭(因为我想查看文档,因为我在参数中输入),所以我将使用`InsertLeave`行. (7认同)

Pro*_*sch 18

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

将以下内容放在.vimrc中:

let g:SuperTabClosePreviewOnPopupClose = 1
Run Code Online (Sandbox Code Playgroud)

  • 我赞成这个答案,因为它暗示YouCompleteMe插件有ag:ycm_autoclose_preview_window_after_insertion选项. (15认同)

Ala*_*ong 7

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

:函数,pclose

手动关闭临时预览.