หลักฐาน
เนื่องจากไม่มีไฟล์อื่นที่คุณเพิ่งเรียกใช้ล้วน ol จริง ๆ 'การ:bd
ลบบัฟเฟอร์ปัจจุบัน ... ลองใช้โดยไม่ลองแล้ว#
คุณจะเห็นผลลัพธ์เหมือนกัน สิ่งที่คล้ายกันเกิดขึ้นกับ:buffer
, :sbuffer
และอย่างน้อยสองคำสั่งอื่น ๆ ที่รับ#
เป็นอาร์กิวเมนต์: พวกเขาอย่างเงียบ ๆ ทำตัวราวกับว่าไม่มีข้อโต้แย้งได้ผ่าน
พร้อมสายเดียวกันถ้าคุณพยายามที่คุณจะได้รับข้อผิดพลาดนี้::bunload #
E90: Cannot unload last buffer
ทำงาน:bunload
โดยไม่มีข้อโต้แย้งและคุณจะได้รับผลลัพธ์เหมือนเดิมอีกครั้ง
เอกสาร
ดังนั้นเราจึงมีหลักฐานที่#
ถูกแทนที่ด้วย "ไม่มีอะไร" (อาจเป็นสตริงว่าง) เราไปจากที่นี่ที่ไหน ฉันแหย่ไปรอบ ๆ แฟ้มช่วยเหลือในขณะที่พยายามค้นหาการพูดถึงพฤติกรรมนี้ ไม่มีอะไรชัดเจน แต่:h cmdline-lines
พูดว่า (เลื่อนหน้าลงหนึ่งหรือสองหน้า) ...
เมื่อใช้อักขระ '%' หรือ '#' ในกรณีที่คาดว่าชื่อไฟล์จะถูกขยายเป็นชื่อไฟล์ปัจจุบันและชื่ออื่น
ฉันอ่านว่าเป็นเสียงเรียก#
ผ่านexpand()
ฟังก์ชั่น (เช่นexpand('#')
) หรืออย่างน้อยรหัสพื้นฐานเดียวกันที่ใช้มี
:h expand()
พูดว่า:
ขยาย .. คำหลักพิเศษ .. เมื่อใช้ '%' หรือ '#' และไม่ได้กำหนดชื่อไฟล์ปัจจุบันหรือชื่อสำรองจะใช้สตริงว่าง
เสียงที่คุ้นเคย.
รหัส
ตอนนี้ไม่มีข้อสรุปใดที่ชัดเจนหรือให้เงื่อนงำว่าทำไม? ดังนั้นฉันจึงใช้เวลาขุดอีก ... คราวนี้เป็นรหัส ฉันซีเป็นสนิมมากและฉันไม่ได้มีเครื่องมือที่ดีที่ติดตั้ง แต่ฉันจัดการเพื่อหาฟังก์ชั่นที่ไม่ติดตั้งบางอย่างสำหรับเรียกว่า:bdelete
do_bufdel()
นี้จะส่งอาร์กิวเมนต์บรรทัดคำสั่งผ่านbuflist_findpat()
ซึ่งถ้าพบให้ผลตอบแทนคุ้มค่า#
curwin->w_alt_fnum
นั่นคือ "หมายเลขบัฟเฟอร์" ของบัฟเฟอร์สำรอง ... ซึ่งไม่สามารถเป็นค่าบวกในสถานการณ์ของเรา (ไม่มีการตรวจสอบว่าไฟล์ alt ถูกต้อง / มีอยู่ก่อนที่จะเลือกค่าส่งคืนนั้น)
การย้อนกลับในdo_bufdel()
การตรวจสอบจะทำกับค่าส่งคืนสำหรับหมายเลขบัฟเฟอร์ที่น้อยกว่า 0 ซึ่งในกรณีนี้การประมวลผลการวนรอบพารามิเตอร์จะแยกออก นั่นจะส่งผลให้ไม่มีพารามิเตอร์ที่นำเสนอใน:bdelete
รหัสหลัก... ซึ่งเหมาะสมกับสัญชาติญาณก่อนหน้าของฉัน
อะไรต่อไป?
ดูเหมือนว่าจะทำงานได้ตามที่ได้รับการออกแบบมาโดยที่ฉันไม่เห็นอะไรเลยที่ดูเหมือนข้อผิดพลาดที่ชัดเจน อาจเป็นบาปของการละเว้นแม้ว่า ... กรณีมุมที่ถูกมองข้ามและจึงไม่มีการจัดการที่สง่างาม แต่มีเพียงนักพัฒนาที่เขียนสิ่งนี้รู้อย่างแน่นอน ดังนั้นขั้นตอนสุดท้ายคือพยายามป้อนข้อมูลของพวกเขา ดังที่Christian B. กล่าวว่าการถามรายการ vim-dev เป็นวิธีที่จะไป
(โปรดทราบว่าbuflist_findpat()
เป็นฟังก์ชันยูทิลิตี้ดังนั้นจึงไม่จำเป็นต้องใช้จินตนาการในการคิด:bunload
เช่น:buffer
นั้น ฯลฯ กำลังใช้มันเช่นกัน ... ที่จะอธิบายพฤติกรรมทั่วไปของพวกเขาด้วยความเคารพ#
)
NVIM v0.3.0-dev
ฉันตรวจสอบ