Есть ли простой способ закрыть рабочий буфер / окно предварительного просмотра?

65

Один из установленных мной плагинов (возможно, Supertab) предоставляет хороший обзор документации для выделенного в данный момент элемента в меню завершения:

введите описание изображения здесь

(Очевидно) рабочий буфер остается открытым даже после выхода из завершения (нажатием Enterили Space). Затем, чтобы выйти из этого, я делаю <c-w>↑:q, но я нахожу необходимость нажимать Ctrlочень раздражает (одна из причин, почему я избегаю расщепления).

Какой быстрый способ закрыть этот буфер? Есть ли родной способ, или я должен написать отображение?

Мур
источник
2
Что - то , что могло бы сделать Ctrlменее раздражающим является переназначение Caps Lockк Ctrlили их замену , если вы хотите сохранить Caps Lockимеющийся.
8bittree
Какой плагин вы используете для завершения кода Python? Например jedi-vimесть вариант g:jedi#auto_close_doc.
Алекс Кролл
@ AlexKroll, если честно, понятия не имею. Я думаю, что это может быть Supertab. Это плагины, которые я установил: github.com/murukeshm/vimrc/tree/master/bundle . У меня не установлено джедая.
Муру
2
@Muru g:SuperTabClosePreviewOnPopupClose (default 0)Похоже, это то, что вы хотите:he supertab-closepreviewonpopupclose
Алекс Кролл
@AlexKroll Да, это помогло, спасибо!
Муру

Ответы:

66

Верхнее окно называется окном предварительного просмотра. Так что любой <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 [lost] [!] Закройте любое открытое окно «Предварительный просмотр». Когда «скрытый»
                опция установлена, или когда буфер был изменен, а [!]
                используется, буфер становится скрытым (если нет
                окно редактирования это). Команда не выполняется, если какой-либо буфер «Предварительный просмотр»
                не может быть закрыт Смотрите также: закрыть.

Другая соответствующая страница справки будет :help preview-window

FDinoff
источник
9
Ура за :pc! Я не понимал, что название «предварительного просмотра» было особенным.
Муру
29

Для моего конкретного случая окно предварительного просмотра было открыто плагинами. Итак, я использовал настройку плагина для автоматического закрытия этих окон.

Supertab

По предложению Алекса Кролла:

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|.
Бека
источник
3

Другой вариант, который автоматически закрывает окно предварительного просмотра и который должен работать с несколькими плагинами завершения, был предложен автором deoplete в проблеме :

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

Недостатком является то, что вы не сможете сфокусировать окно царапин, поэтому прокрутки нет. Но для быстрого поиска это наиболее удобно.

lleaff
источник
0

джедай

если не используется с YCM

let g:jedi#auto_close_doc = 0  " close preview window after completion
Mesco
источник
0

Вы можете использовать этот плагин: bufutils.vim

Он закрывает чистые буферы, список местоположений, список ошибок и т.д.

WEIMA
источник