vim में, के साथ
:buffers
मुझे सभी बफ़र्स की संख्या समान है
:ls
, लेकिन
मैं बफ़र्स की कुल संख्या कैसे प्राप्त कर सकता हूं?
vim में, के साथ
:buffers
मुझे सभी बफ़र्स की संख्या समान है
:ls
, लेकिन
मैं बफ़र्स की कुल संख्या कैसे प्राप्त कर सकता हूं?
जवाबों:
हेपेटाइट के समाधान से समान विचार, लेकिन एक लाइनर के रूप में। कई अन्य चीजें इस तरह से की जा सकती हैं: बफर का नाम प्राप्त करें (मानचित्र के लिए धन्यवाद), पोंछने वाले बफ़र्स जो एक पैटर्न से मेल खाते हैं , /programming/2974192/how-can-i-pare-down- vims-बफर-सूची-से-केवल-सक्रिय-बफ़र्स / 2974600 # 2974600n आदि।
echo len(filter(range(1, bufnr('$')), 'buflisted(v:val)'))
अब तक के जवाब बहुत ज्यादा हैक हैं। यहाँ विम का अंतर्निहित तरीका है:
len(getbufinfo({'buflisted':1}))
हमेशा की तरह, :h getbufinfo()
आधिकारिक स्पष्टीकरण के लिए विम की सहायता ( ) देखें ।
मेरे ज्ञान के लिए ऐसा करने के लिए विम में कोई अंतर्निहित पद्धति नहीं है, लेकिन आप एक समारोह बना सकते हैं:
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
इसके नाम में समाप्त होने वाले नाम के साथ एक पाठ फ़ाइल में उपरोक्त रखें: इसे स्रोत, फिर आप कुछ ऐसा कर सकते हैं:
:let buffer_count = NrBufs()
:echo buffer_count
21 जून का नोट: यदि आपके पास 2017 के रूप में विम का हालिया संस्करण है, तो नीचे गिद का जवाब इष्टतम समाधान है।
क्या आप शायद देख रहे हैं?
:echo(bufnr('$'))