Existe uma maneira fácil de fechar um buffer temporário / janela de visualização?

65

Um dos plug-ins que instalei (provavelmente o Supertab) fornece uma boa visualização da documentação do item destacado no momento no menu de conclusão:

insira a descrição da imagem aqui

O (aparentemente) buffer temporário permanece aberto mesmo depois que eu saio da conclusão (pressionando Enterou Space). Então, para sair, eu faço <c-w>↑:q, mas acho que ter que pressionar Ctrlextremamente irritante (uma razão pela qual evito divisões).

Qual é a maneira rápida de fechar esse buffer temporário? Existe uma maneira nativa, ou eu tenho que escrever um mapeamento?

muru
fonte
2
Algo que pode fazer Ctrlmenos irritante é remapeamento Caps Locka Ctrlou trocando-os se você deseja manter Caps Lockdisponível.
8bittree
Qual plugin você usa para o código python completo? Por exemplo, jedi-vimtem opção g:jedi#auto_close_doc.
Alex Kroll
@AlexKroll para ser sincero, não faço ideia. Eu acho que pode ser Supertab. Estes são os plugins que eu instalei: github.com/murukeshm/vimrc/tree/master/bundle . Eu não tenho o Jedi instalado.
Muru
2
@muru g:SuperTabClosePreviewOnPopupClose (default 0)Parece que é o que você quer #:he supertab-closepreviewonpopupclose
Alex Kroll
@AlexKroll Sim, isso funcionou, obrigado!
Muru

Respostas:

66

A janela superior é chamada de janela de visualização. Assim, qualquer um <c-w>z, <c-w><c-z>ou :pc[lose][!]deve funcionar.

A seguir, a ajuda para :help :pclose

CTRL-W z CTRL-W_z
CTRL-W CTRL-Z CTRL-W_CTRL-Z
: pc: pclose
: pc [perde] [!] Feche qualquer janela "Visualizar" atualmente aberta. Quando o 'oculto'
                opção está definida ou quando o buffer foi alterado e o [!] é
                usado, o buffer fica oculto (a menos que haja outro
                janela de edição). O comando falha se houver um buffer de "Visualização"
                não pode ser fechado. Veja também: close.

Outra página de ajuda relevante seria :help preview-window

FDinoff
fonte
9
Yay for :pc! Não percebi que o nome "preview" era especial.
muru 29/07
29

Para o meu caso específico, a janela de visualização foi aberta por plugins. Então, eu usei a configuração do plugin para fechar automaticamente essas janelas.

Supertab

Como sugerido por Alex Kroll:

let g:SuperTabClosePreviewOnPopupClose = 1

Você me completa

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

Se a segunda variável estiver definida, a primeira não terá efeito. Dos documentos:

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
muru
fonte
4

outra boa opção, relevante também em outros casos, está sendo usada :onlypara fechar todas as outras janelas, incluindo a visualização:

: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|.
Beka
fonte
3

Outra opção que fecha automaticamente a janela de visualização e que deve funcionar com vários plugins de conclusão foi sugerida pelo autor do deoplete em uma edição :

autocmd InsertLeave,CompleteDone * if pumvisible() == 0 | pclose | endif

A desvantagem é que você não será capaz de focar na janela de rascunho, portanto não precisa rolar. Mas, para pesquisas rápidas, é o mais conveniente.

lleaff
fonte
0

Jedi

se não estiver usando com o YCM

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

Você pode usar este plugin: bufutils.vim

Fecha buffers de rascunho, lista de locais, lista de erros, etc ...

weima
fonte