C'è un modo semplice per chiudere un buffer di memoria virtuale / finestra di anteprima?


65

Uno dei plugin che ho installato (probabilmente Supertab) offre una bella vista della documentazione per l'elemento attualmente evidenziato nel menu di completamento:

inserisci qui la descrizione dell'immagine

Il buffer di memoria (apparentemente) rimane aperto anche dopo che esco dal completamento (premendo Entero Space). Quindi, per smetterla, lo faccio <c-w>↑:q, ma trovo che debba premere Ctrlestremamente fastidioso (un motivo per cui evito le divisioni).

Qual è un modo rapido per chiudere questo buffer di memoria virtuale? Esiste un modo nativo o devo scrivere una mappatura?


2
Qualcosa che potrebbe rendere Ctrlmeno fastidioso è rimappatura Caps Lockper Ctrlo scambiare loro se si desidera mantenere Caps Locka disposizione.
8bittree,

Quale plugin usi per il codice Python completo? Ad esempio jedi-vimavere un'opzione g:jedi#auto_close_doc.
Alex Kroll,

@AlexKroll a dire il vero, non ne ho idea. Penso che potrebbe essere Supertab. Questi sono i plugin che ho installato: github.com/murukeshm/vimrc/tree/master/bundle . Non ho installato Jedi.
muru,

2
@muru g:SuperTabClosePreviewOnPopupClose (default 0)Sembra che sia quello che vuoi:he supertab-closepreviewonpopupclose
Alex Kroll,

@AlexKroll Sì, ha funzionato, grazie!
Muru,

Risposte:


66

La finestra in alto si chiama finestra di anteprima. Quindi qualsiasi <c-w>z, <c-w><c-z>o :pc[lose][!]dovrebbe funzionare.

Di seguito è di aiuto :help :pclose

CTRL-W z CTRL-W_z
CTRL-W CTRL-Z CTRL-W_CTRL-Z
: pc: pclose
: pc [perdi] [!] Chiudi qualsiasi finestra "Anteprima" attualmente aperta. Quando il 'nascosto'
                l'opzione è impostata o quando il buffer è stato modificato e [!] lo è
                usato, il buffer diventa nascosto (a meno che non ce ne sia un altro
                finestra che lo modifica). Il comando ha esito negativo se è presente un buffer "Anteprima"
                non può essere chiuso. Vedi anche: vicino.

Un'altra pagina di aiuto pertinente sarebbe :help preview-window


9
Sì per :pc! Non mi rendevo conto che il nome di "anteprima" era speciale.
muru,

29

Per il mio caso specifico, la finestra di anteprima è stata aperta dai plugin. Quindi, ho usato la configurazione del plugin per chiudere automaticamente queste finestre.

Supertab

Come suggerito da Alex Kroll:

let g:SuperTabClosePreviewOnPopupClose = 1

Tu mi completi

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

Se è impostata la seconda variabile, la prima non ha alcun effetto. Dai documenti:

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

un'altra bella opzione, che è rilevante anche in altri casi, sta usando :onlyper chiudere tutte le altre finestre, inclusa l'anteprima:

: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

Un'altra opzione che chiude automaticamente la finestra di anteprima e che dovrebbe funzionare con più plugin di completamento è stata suggerita dall'autore di Deoplete in un problema :

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

Il rovescio della medaglia è che non sarai in grado di mettere a fuoco la finestra di scratch, quindi nessuno scorrimento. Ma per le ricerche rapide è il più conveniente.


0

Jedi

se non si utilizza con YCM

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

0

Puoi usare questo plugin: bufutils.vim

Chiude buffer di memoria, elenco posizioni, elenco errori, ecc ...

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.