เป็นกลุ่ม: ลบบัฟเฟอร์โดยไม่สูญเสียหน้าต่างแยก


149

เมื่อบัฟเฟอร์ถูกลบ (คำสั่ง "bd [elete]") จะไม่เพียง แต่ลบบัฟเฟอร์เท่านั้น แต่ยังลบหน้าต่างแยกที่บัฟเฟอร์อยู่

มีวิธีลบ / ยกเลิกการโหลดบัฟเฟอร์และแยกหน้าต่างออกหรือไม่?



มันใช้งานได้ดีสำหรับฉัน
Rumple Stiltskin

[อันนี้DeleteCurBufferNotCloseWindow()ทำงานได้ดีและอ่านได้ค่อนข้างดี] ( stackoverflow.com/a/44950143/3625404 )
qeatzy

คำตอบ:



327

bp|bd # จะทำมัน


รายละเอียด: bp("บัฟเฟอร์ก่อนหน้า") ย้ายเราไปยังบัฟเฟอร์ที่แตกต่างกันในหน้าต่างปัจจุบัน ( bnอาจใช้งานได้เช่นกัน) จากนั้นbd #("บัฟเฟอร์ลบ" "ไฟล์สำรอง") ลบบัฟเฟอร์ที่เราเพิ่งย้ายออกไป help bpดู: help bd, help alternate-file,


71
คุณไม่รู้ว่านานแค่ไหนที่ฉันกำลังมองหาบางสิ่งเช่นนี้ซึ่งง่ายมากไม่ต้องการและสคริปต์ทั้งหมดจะทำงาน ใน VIMRC ของฉันตอนนี้ฉันได้แมปนี้สำหรับ CTRL + C:nnoremap <C-c> :bp\|bd #<CR>
Cloud

11
ฉันพยายามที่จะทำการแมปโดยใช้แต่ฉันได้รับnmap <silent> <leader>d :bp|bd #<CR> E94: No matching buffer for #<CR>
Fábio Perez

22
ใส่แบ็กสแลชที่ด้านหน้า|(เช่น:bp\|bd)
โคลน

4
ฉันรู้ว่าไม่ควรติดตั้งปลั๊กอินสำหรับสิ่งนี้ ขอบคุณ!
Akash Agrawal

2
b#|bd #จะเปลี่ยนเป็นบัฟเฟอร์ที่ใช้ล่าสุดแทนการถัดไป / ก่อนหน้า อย่างไรก็ตามมันจะข้ามไปยังบัฟเฟอร์ที่ซ่อนอยู่ถ้าคุณมีset hiddenดังนั้นฉันจึงสร้างฟังก์ชั่น BD ที่ชาญฉลาดขึ้นเพื่อหลีกเลี่ยงปัญหานั้น
c24w

15

คุณสามารถเพิ่มรายการต่อไปนี้เพื่อทำงาน.vimrcได้โดยไม่ต้องแตะตัวแยกหน้าต่าง:Bdbd

command Bd bp\|bd \#

ฉันพบว่านี่เป็นส่วนเสริมที่มีประโยชน์สำหรับสิ่งที่Mud ตอบ


นั่นคือสิ่งที่ฉันมีใน. vimrc ของฉัน :)
Mud

และคุณสามารถเพิ่ม 3 คำสั่งสำหรับการยกเลิกการโหลดการลบและการลบบัฟเฟอร์: คำสั่ง! BUN bp \ | bun \ # คำสั่ง! คำสั่ง BD bp \ | bd \ #! BW bp \ | bw \ # ซึ่งเทียบเท่ากับที่ bufkill ให้ แต่มี 3 บรรทัดใน vimrc แทนที่จะเป็นปลั๊กอิน 700+ บรรทัด!
fievel

3
สำหรับฉันมันใช้งานได้เฉพาะใน. vimrc command! Bd bp|bd #เท่านั้น คำสั่งด้านบนที่มี `` เก็บบัฟเฟอร์ไว้ในรายการบัฟเฟอร์
mljrg


3

ฉันทำสิ่งที่คล้ายกับ @Mud แต่เปลี่ยนไปใช้บัฟเฟอร์มุมมองก่อนหน้า#แทนบัฟเฟอร์ก่อนหน้าในรายการบัฟเฟอร์ นี่คือกุญแจผูกพันในของฉัน.vimrc:

nnoremap <silent> <leader>q :lclose<bar>b#<bar>bd #<CR>

ปิดหน้าต่างที่ตั้งถ้ามีอยู่ให้สลับไปที่บัฟเฟอร์มุมมองก่อนหน้าจากนั้นปิดบัฟเฟอร์ที่สลับล่าสุด


1

ตัวเลือกของฉันคือ

:sb # | bd #
:sb 1 | bd #
: <1. Recall Buffer> | <2. Delete Buffer>

คิดว่าอย่างนั้น! /// <1 เรียกคืนบัฟเฟอร์> | <2 ลบบัฟเฟอร์>

:vert sb 2 | bd #
:vert sb <tab key~completed file(buffer)name> | bd #

ทำไม?! ง่ายต่อการจำคำหลัก 3 (+ 1)!

  1. sb split_buffer
  2. bd delete buffer ▶ simple 2 คีย์เวิร์ด
  3. # หรือจำนวนบัฟเฟอร์
  4. vert ▶ short_form ของแนวตั้ง (split_buffer หรืออื่น ๆ )

นั่นง่ายและมีประโยชน์มากในหลาย ๆ กรณี!

ขอให้มีความสุขมาก ๆ ในวันนี้! :)


0

ฉันเคยใช้:

:bp<bar>sp<bar>bn<bar>bd<CR>

แต่ฉันพบบางโอกาสที่มันปิดหน้าต่างของฉัน ยิ่งไปกว่านั้นบัฟเฟอร์ถัดไปหรือก่อนหน้านี้อาจไม่ใช่สิ่งที่คุณต้องการให้แสดงในการแยก

ตอนนี้ฉันทำสิ่งนี้:

  • เปลี่ยนเป็นบัฟเฟอร์ที่ฉันต้องการทำงาน
  • ลบบัฟเฟอร์สำรอง

nnoremap <leader>d :bd#<CR>

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