มีวิธีง่าย ๆ ในการปิดหน้าต่างตัวบัฟเฟอร์ / ตัวอย่าง?


65

หนึ่งในปลั๊กอินที่ฉันติดตั้ง (อาจเป็น Supertab) ให้มุมมองที่ดีของเอกสารประกอบสำหรับรายการที่ไฮไลต์อยู่ในเมนูเสร็จ:

ป้อนคำอธิบายรูปภาพที่นี่

บัฟเฟอร์รอยขีดข่วน (เห็นได้ชัด) ยังคงเปิดอยู่แม้หลังจากที่ฉันออกจากความสำเร็จ (โดยการกดEnterหรือSpace) จากนั้นเพื่อออกจากมันฉันทำ<c-w>↑:qแต่ฉันพบว่าต้องกดCtrlที่น่ารำคาญอย่างยิ่ง (เหตุผลหนึ่งที่ฉันหลีกเลี่ยงการแยก)

วิธีปิดบัฟเฟอร์รอยขีดข่วนอย่างรวดเร็วคืออะไร มีวิธีแบบเนทีฟหรือฉันต้องเขียนแผนที่หรือไม่?


2
บางสิ่งบางอย่างที่อาจทำให้Ctrlน่ารำคาญน้อยแมปCaps LockไปCtrlหรือแลกเปลี่ยนพวกเขาหากคุณต้องการที่จะให้Caps Lockใช้ได้
8bittree

ปลั๊กอินใดที่คุณใช้สำหรับรหัสไพ ธ อน ตัวอย่างเช่นมีตัวเลือกjedi-vim g:jedi#auto_close_doc
Alex Kroll

@AlexKroll บอกตามตรงฉันไม่มีความคิด ฉันคิดว่ามันอาจจะเป็น Supertab เหล่านี้เป็นปลั๊กอินที่ผมได้ติดตั้ง: github.com/murukeshm/vimrc/tree/master/bundle ฉันไม่ได้ติดตั้งเจได
muru

2
@muru g:SuperTabClosePreviewOnPopupClose (default 0)ดูเหมือนว่ามันเป็นสิ่งที่คุณต้องการ:he supertab-closepreviewonpopupclose
Alex Kroll

@AlexKroll ใช่แล้วนั่นเป็นกลอุบายขอบคุณ!
muru

คำตอบ:


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 [สูญเสีย] [!] ปิดหน้าต่าง "ดูตัวอย่าง" ที่เปิดอยู่ในขณะนี้ เมื่อ 'ซ่อน'
                มีการตั้งค่าตัวเลือกหรือเมื่อบัฟเฟอร์ถูกเปลี่ยนและ [!] คือ
                ใช้แล้วบัฟเฟอร์จะถูกซ่อน (เว้นแต่จะมีอีกอันหนึ่ง)
                หน้าต่างแก้ไขมัน) คำสั่งล้มเหลวหากบัฟเฟอร์ "ตัวอย่าง" ใด ๆ
                ไม่สามารถปิดได้ ดูเพิ่มเติมที่: ปิด

หน้าช่วยเหลืออื่นที่เกี่ยวข้องจะเป็น :help preview-window


9
เย้สำหรับ:pc! ฉันไม่ทราบว่าชื่อ "ตัวอย่าง" นั้นพิเศษ
muru

29

สำหรับกรณีเฉพาะของฉันหน้าต่างแสดงตัวอย่างถูกเปิดโดยปลั๊กอิน ดังนั้นฉันใช้การกำหนดค่าปลั๊กอินเพื่อปิดหน้าต่างเหล่านี้โดยอัตโนมัติ

Supertab

ตามที่แนะนำโดย Alex Kroll:

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

ข้อเสียคือคุณจะไม่สามารถโฟกัสหน้าต่างรอยขีดข่วนได้ดังนั้นจึงไม่มีการเลื่อน แต่สำหรับการค้นหาอย่างรวดเร็วมันสะดวกที่สุด



0

คุณสามารถใช้ปลั๊กอินนี้: bufutils.vim

มันปิดตัวบัฟเฟอร์รอยขีดข่วนรายการตำแหน่งรายการข้อผิดพลาด ฯลฯ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.