有没有简单的方法可以关闭暂存缓冲区/预览窗口?


64

我安装的其中一个插件(可能是Supertab)为完成菜单中当前突出显示的项目提供了一个很好的文档视图:

在此处输入图片说明

即使我退出完成(按EnterSpace),(显然)暂存缓冲区仍保持打开状态。然后,要退出它,我这样做了<c-w>↑:q,但是我发现不得不按下Ctrl非常烦人的代码(我避免分裂的一个原因)。

关闭此暂存缓冲区的快速方法是什么?有本机的方法,还是我必须编写映射?


2
一些可能让Ctrl那么讨厌被重新映射Caps LockCtrl或交换他们,如果你想保持Caps Lock可用。
8bittree

您用于python代码的哪个插件完整?例如,jedi-vim具有option g:jedi#auto_close_doc
Alex Kroll 2015年

@AlexKroll,老实说,我不知道。我认为可能是Supertab。这些是我安装的插件:github.com/murukeshm/vimrc/tree/master/bundle。我没有安装Jedi。
muru

2
@muru g:SuperTabClosePreviewOnPopupClose (default 0)看起来就是您想要的:he supertab-closepreviewonpopupclose
Alex Kroll

@AlexKroll是的,做到了,谢谢!
muru

Answers:


65

顶部窗口称为预览窗口。因此<c-w>z<c-w><c-z>或中的任何一个:pc[lose][!]都应该起作用。

以下是对 :help :pclose

CTRL-W z CTRL-W_z
CTRL-W CTRL-Z CTRL-W_CTRL-Z
:pc:pclose
:pc [lose] [!]关闭当前打开的任何“预览”窗口。当“隐”
                设置选项,或者更改缓冲区并且[!]为
                使用时,缓冲区变为隐藏(除非存在另一个
                窗口进行编辑)。如果有任何“预览”缓冲区,该命令将失败
                无法关闭。另请参见:close。

另一个相关的帮助页面是 :help preview-window


9
:pc!我没有意识到“预览”这个名称很特别。
muru

29

对于我的特定情况,预览窗口由插件打开。因此,我使用了插件配置来自动关闭这些窗口。

超级表

如Alex Kroll所建议:

let g:SuperTabClosePreviewOnPopupClose = 1

你完成我

let g:ycm_autoclose_preview_window_after_insertion = 1
let g:ycm_autoclose_preview_window_after_completion = 1

如果设置了第二个变量,则第一个无效。从文档:

The *g:ycm_autoclose_preview_window_after_completion* option

When this option is set to '1', YCM will auto-close the 'preview' window after
the user accepts the offered completion string. If there is no 'preview' window
triggered because there is no 'preview' string in 'completeopt', this option is
irrelevant. See the |g:ycm_add_preview_to_completeopt| option for more details.

Default: '0'
>
  let g:ycm_autoclose_preview_window_after_completion = 0
<
-------------------------------------------------------------------------------
The *g:ycm_autoclose_preview_window_after_insertion* option

When this option is set to '1', YCM will auto-close the 'preview' window after
the user leaves insert mode. This option is irrelevant if
|g:ycm_autoclose_preview_window_after_completion| is set or if no 'preview'
window is triggered. See the |g:ycm_add_preview_to_completeopt| option for more
details.

Default: '0'
>
  let g:ycm_autoclose_preview_window_after_insertion = 0

4

另一个不错的选择,在其他情况下也相关,它:only用于关闭所有其他窗口,包括预览:

:on[ly][!]
:{count}on[ly][!]
CTRL-W o                        *CTRL-W_o* *E445*
CTRL-W CTRL-O                   *CTRL-W_CTRL-O* *:on* *:only*
    Make the current window the only one on the screen. All other
    windows are closed. For {count} see |:quit|.


0

绝地

如果不与YCM一起使用

let g:jedi#auto_close_doc = 0  " close preview window after completion

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.