ในกลุ่มด้วย
:buffers
ฉันได้รับจำนวนบัฟเฟอร์ทั้งหมดด้วย
:ls
แต่
ฉันจะหาจำนวนบัฟเฟอร์ได้อย่างไร
ในกลุ่มด้วย
:buffers
ฉันได้รับจำนวนบัฟเฟอร์ทั้งหมดด้วย
:ls
แต่
ฉันจะหาจำนวนบัฟเฟอร์ได้อย่างไร
คำตอบ:
แนวคิดเดียวกันกับวิธีแก้ปัญหาของ Heptite แต่ใช้เป็นสายการบินเดียว สิ่งอื่น ๆ อีกมากมายสามารถทำได้ด้วยวิธีนี้: รับชื่อของบัฟเฟอร์ (ขอบคุณแผนที่), การลบล้างบัฟเฟอร์ที่ตรงกับรูปแบบ , /programming/2974192/how-can-i-pare-down- vims-buffer-list-to-only-include-active-buffers / 2974600 # 2974600nเป็นต้น
echo len(filter(range(1, bufnr('$')), 'buflisted(v:val)'))
คำตอบจนถึงตอนนี้แฮ็คเกินไป นี่คือวิธีในตัวของกลุ่ม:
len(getbufinfo({'buflisted':1}))
และเช่นเคยเห็นความช่วยเหลือของกลุ่ม ( :h getbufinfo()
) สำหรับคำอธิบายอย่างเป็นทางการ
สำหรับความรู้ของฉันไม่มี Vim ในตัวในการทำเช่นนี้ แต่คุณสามารถสร้างฟังก์ชั่น:
function! NrBufs()
let i = bufnr('$')
let j = 0
while i >= 1
if buflisted(i)
let j+=1
endif
let i-=1
endwhile
return j
endfunction
ใส่ด้านบนในไฟล์ข้อความที่มีชื่อลงท้ายด้วย. vim,: source แล้วคุณสามารถทำสิ่งต่อไปนี้
:let buffer_count = NrBufs()
:echo buffer_count
21 มิถุนายนหมายเหตุ:หากคุณมี Vim เวอร์ชั่นล่าสุด ณ ปี 2560 คำตอบของ Gid ด้านล่างเป็นคำตอบที่ดีที่สุด
คุณกำลังมองหาบางที
:echo(bufnr('$'))
หากคุณต้องการโซลูชันของ Heptite เป็นคำสั่งให้เพิ่มคำสั่งต่อไปนี้ในไฟล์. vimrc ของคุณ:
command BufNum echo len(filter(range(1, bufnr('$')), 'buflisted(v:val)'))