Czy istnieje prosty sposób na zamknięcie okna buforowania / podglądu scratch?

65

Jedna z zainstalowanych przeze mnie wtyczek (prawdopodobnie Supertab) zapewnia ładny widok dokumentacji aktualnie podświetlonej pozycji w menu ukończenia:

wprowadź opis zdjęcia tutaj

(Najwyraźniej) bufor scratch pozostaje otwarty nawet po wyjściu z zakończenia (przez naciśnięcie Enterlub Space). Następnie, aby to zrobić <c-w>↑:q, robię to , ale muszę naciskać Ctrlwyjątkowo irytująco (jeden z powodów, dla których unikam rozszczepień).

Jak szybko zamknąć ten bufor scratch? Czy istnieje sposób natywny, czy muszę napisać mapowanie?

muru
źródło
2
Coś, co może uczynić Ctrlmniej irytujące jest manipulowanie Caps Locksię Ctrllub zamianę je jeśli chcesz zachować Caps Lockdostępny.
8bittree
Której wtyczki używasz do kodu Pythona? Na przykład jedi-vimmają opcję g:jedi#auto_close_doc.
Alex Kroll,
@AlexKroll szczerze mówiąc, nie mam pojęcia. Myślę, że może to być Supertab. Oto zainstalowane przeze mnie wtyczki: github.com/murukeshm/vimrc/tree/master/bundle . Nie mam zainstalowanego Jedi.
muru
2
@muru g:SuperTabClosePreviewOnPopupClose (default 0)Wygląda na to, że tego chcesz:he supertab-closepreviewonpopupclose
Alex Kroll
@AlexKroll Tak, to załatwiło sprawę, dzięki!
muru

Odpowiedzi:

66

Górne okno nazywa się oknem podglądu. Tak więc każdy z <c-w>z, <c-w><c-z>lub :pc[lose][!]powinno działać.

Poniżej znajduje się pomoc dla :help :pclose

CTRL-W z CTRL-W_z
CTRL-W CTRL-Z CTRL-W_CTRL-Z
: pc: pclose
: pc [stracić] [!] Zamknij dowolne otwarte okno „Podgląd”. Gdy „ukryty”
                ustawiono opcję lub gdy bufor został zmieniony, a [!] to
                użyty bufor zostaje ukryty (chyba że jest inny)
                okno edycji). Polecenie kończy się niepowodzeniem, jeśli jakikolwiek bufor „Preview”
                nie można zamknąć. Zobacz także: zamknij.

Kolejna odpowiednia strona pomocy to :help preview-window

FDinoff
źródło
9
No tak :pc! Nie zdawałem sobie sprawy, że nazwa „podglądu” była wyjątkowa.
muru
29

W moim konkretnym przypadku okno podglądu zostało otwarte przez wtyczki. Tak więc użyłem konfiguracji wtyczki, aby automatycznie zamknąć te okna.

Supertab

Zgodnie z sugestią Alexa Krolla:

let g:SuperTabClosePreviewOnPopupClose = 1

Dopełniasz mnie

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

Jeśli ustawiona jest druga zmienna, pierwsza nie ma wpływu. Z dokumentów:

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
źródło
4

inną fajną opcją, która jest istotna również w innych przypadkach, jest użycie :onlydo zamknięcia wszystkich innych okien, w tym podglądu:

: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
źródło
3

Inna opcja, która automatycznie zamyka okno podglądu i powinna działać z wieloma wtyczkami uzupełniającymi, została zasugerowana przez autora deoplete w problemie :

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

Minusem jest to, że nie będziesz w stanie skupić się na oknie rysowania, więc nie będzie przewijania. Ale dla szybkiego wyszukiwania jest to najwygodniejsze.

lleaff
źródło
0

Jedi

jeśli nie używasz z YCM

let g:jedi#auto_close_doc = 0  " close preview window after completion
Mesco
źródło
0

Możesz użyć tej wtyczki: bufutils.vim

Zamyka bufory scratch, listę lokalizacji, listę błędów itp.

weima
źródło