¿Hay alguna manera fácil de cerrar una ventana de memoria intermedia / vista previa?


65

Uno de los complementos que he instalado (probablemente Supertab) proporciona una buena vista de la documentación del elemento actualmente resaltado en el menú de finalización:

ingrese la descripción de la imagen aquí

El búfer de memoria virtual (aparentemente) permanece abierto incluso después de salir de la finalización (presionando Entero Space). Luego, para dejarlo, lo hago <c-w>↑:q, pero encuentro que presionar es Ctrlextremadamente molesto (una de las razones por las que evito las divisiones).

¿Cuál es una forma rápida de cerrar este búfer de memoria virtual? ¿Hay una forma nativa, o tengo que escribir un mapeo?


2
Algo que podría hacer Ctrlmenos molesto haya reasignado Caps Locka Ctrlo intercambiar con ellos si desea mantener Caps Lockdisponible.
8bittree

¿Qué complemento utilizas para completar el código de Python? Por ejemplo jedi-vimtener opción g:jedi#auto_close_doc.
Alex Kroll

@AlexKroll para ser honesto, no tengo idea. Creo que podría ser Supertab. Estos son los complementos que he instalado: github.com/murukeshm/vimrc/tree/master/bundle . No tengo Jedi instalado.
muru

2
@muru g:SuperTabClosePreviewOnPopupClose (default 0)Parece que es lo que quieres:he supertab-closepreviewonpopupclose
Alex Kroll

@AlexKroll Sí, eso funcionó, ¡gracias!
muru

Respuestas:


66

La ventana superior se llama ventana de vista previa. Entonces, cualquiera de <c-w>z, <c-w><c-z>o :pc[lose][!]debería funcionar.

La siguiente es la ayuda para :help :pclose

CTRL-W z CTRL-W_z
CTRL-W CTRL-Z CTRL-W_CTRL-Z
: pc: pclose
: pc [perder] [!] Cierre cualquier ventana de "Vista previa" abierta actualmente. Cuando lo 'oculto'
                se establece la opción, o cuando se cambió el búfer y el [!] es
                utilizado, el búfer se oculta (a menos que haya otro
                ventana de edición). El comando falla si hay algún búfer "Vista previa"
                No se puede cerrar. Ver también: cerrar.

Otra página de ayuda relevante sería :help preview-window


99
Yay por :pc! No me di cuenta de que el nombre de "vista previa" era especial.
muru

29

Para mi caso específico, la ventana de vista previa fue abierta por complementos. Entonces, utilicé la configuración del complemento para cerrar automáticamente estas ventanas.

Supertab

Como lo sugiere Alex Kroll:

let g:SuperTabClosePreviewOnPopupClose = 1

Tu me completas

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

Si se establece la segunda variable, la primera no tiene efecto. De los 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

4

Otra buena opción, que también es relevante en otros casos, es usar :onlypara cerrar todas las demás ventanas, incluida la vista previa:

: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|.

3

El autor de Deoplete sugirió otra opción que cierra automáticamente la ventana de vista previa y que debería funcionar con múltiples complementos de finalización :

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

La desventaja es que no podrá enfocar la ventana de cero, por lo que no debe desplazarse. Pero para búsquedas rápidas es lo más conveniente.


0

Jedi

si no se usa con YCM

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

0

Puede usar este complemento: bufutils.vim

Cierra buffers de scratch, lista de ubicaciones, lista de errores, etc.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.