Apakah ada cara mudah untuk menutup buffer awal / jendela pratinjau?


65

Salah satu plugin yang saya instal (mungkin Supertab) memberikan tampilan dokumentasi yang bagus untuk item yang sedang disorot dalam menu penyelesaian:

masukkan deskripsi gambar di sini

Buffer awal (tampaknya) tetap terbuka bahkan setelah saya keluar dari penyelesaian (dengan menekan Enteratau Space). Kemudian, untuk menghentikannya, saya lakukan <c-w>↑:q, tetapi saya merasa harus menekan Ctrlsangat menjengkelkan (salah satu alasan mengapa saya menghindari perpecahan).

Apa cara cepat untuk menutup buffer awal ini? Apakah ada cara asli, atau apakah saya harus menulis pemetaan?


2
Sesuatu yang mungkin membuat Ctrlsedikit menjengkelkan adalah remapping Caps Lockuntuk Ctrlatau swapping mereka jika Anda ingin menyimpan Caps Locktersedia.
8bittree

Plugin mana yang Anda gunakan untuk menyelesaikan kode python? Misalnya jedi-vimpunya opsi g:jedi#auto_close_doc.
Alex Kroll

@ AlexKroll jujur, saya tidak tahu. Saya pikir itu mungkin Supertab. Ini adalah plugin yang saya instal: github.com/murukeshm/vimrc/tree/master/bundle . Saya tidak menginstal Jedi.
muru

2
@uru g:SuperTabClosePreviewOnPopupClose (default 0)Sepertinya itu yang Anda inginkan:he supertab-closepreviewonpopupclose
Alex Kroll

@AlexKroll Ya, itu berhasil, terima kasih!
muru

Jawaban:


66

Jendela atas disebut jendela pratinjau. Jadi, salah satu dari <c-w>z, <c-w><c-z>atau :pc[lose][!]harus bekerja.

Di bawah ini adalah bantuan untuk :help :pclose

CTRL-W z CTRL-W_z
CTRL-W CTRL-Z CTRL-W_CTRL-Z
: pc: pclose
: pc [kehilangan] [!] Tutup semua jendela "Pratinjau" yang saat ini terbuka. Ketika 'disembunyikan'
                opsi disetel, atau ketika buffer diubah dan [!] adalah
                digunakan, buffer menjadi tersembunyi (kecuali ada yang lain
                jendela mengeditnya). Perintah gagal jika ada buffer "Preview"
                tidak bisa ditutup. Lihat juga: tutup.

Halaman bantuan lain yang relevan adalah :help preview-window


9
Yay untuk :pc! Saya tidak menyadari bahwa nama "pratinjau" itu istimewa.
muru

29

Untuk kasus khusus saya, jendela pratinjau dibuka oleh plugin. Jadi, saya menggunakan konfigurasi plugin untuk secara otomatis menutup windows ini.

Supertab

Seperti yang disarankan oleh Alex Kroll:

let g:SuperTabClosePreviewOnPopupClose = 1

YouCompleteMe

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

Jika variabel kedua diatur, variabel pertama tidak berpengaruh. Dari dokumen:

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

opsi bagus lain, yang relevan juga dalam kasus lain, gunakan :onlyuntuk menutup semua jendela lain, termasuk pratinjau:

: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

Opsi lain yang secara otomatis menutup jendela pratinjau dan yang akan berfungsi dengan beberapa plugin penyelesaian disarankan oleh penulis deoplete dalam masalah :

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

Kelemahannya adalah Anda tidak akan bisa memfokuskan jendela awal, jadi jangan menggulir. Tetapi untuk pencarian cepat itu yang paling nyaman.


0

Jedi

jika tidak digunakan dengan YCM

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

0

Anda dapat menggunakan plugin ini: bufutils.vim

Ini menutup buffer awal, daftar lokasi, daftar kesalahan, dll ...

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.