ভিএম: মোট বাফারের সংখ্যা


12

ভিমে, সাথে

:buffers

আমি সমস্ত বাফারগুলির সাথে একই নম্বর পাই

:ls

, তবে
আমি কীভাবে মোট বাফার সংখ্যা পেতে পারি?

উত্তর:


9

হেপাটাইটের সমাধানের চেয়ে একই ধারণা, তবে ওয়ান লাইনার হিসাবে। আরও অনেকগুলি কাজ এইভাবে করা যেতে পারে: বাফারের নাম পান (মানচিত্রের জন্য ধন্যবাদ), একটি প্যাটার্নের সাথে মেলে এমন মুছা বাফারস , /programming/2974192/how-can-i-pare-down- সিম্প-বাফার-তালিকা-কেবলমাত্র-সক্রিয়-বাফার / 2974600 # 2974600n ইত্যাদি অন্তর্ভুক্ত include

echo len(filter(range(1, bufnr('$')), 'buflisted(v:val)'))

14

এখনও পর্যন্ত উত্তরগুলি খুব হ্যাকিযুক্ত। এখানে ভিমের অন্তর্নির্মিত উপায় রয়েছে:

len(getbufinfo({'buflisted':1}))

সর্বদা হিসাবে, :h getbufinfo()সরকারী ব্যাখ্যার জন্য ভিমের সহায়তা ( ) দেখুন।


3
যে সময় এটি জিজ্ঞাসা করা হয়েছিল, আপনার উত্তরটি সম্ভব হত না কারণ ভিম সমর্থন করেনি। এখন এটি সম্ভবত অনুকূল সমাধান
হেপটাইট

4

আমার জানা মতে এটি করার জন্য ভিমে কোনও অন্তর্নির্মিত পদ্ধতি নেই তবে আপনি একটি ফাংশন তৈরি করতে পারেন:

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,: উত্স হিসাবে এটি শেষ করুন, তারপরে আপনি এর মতো কিছু করতে পারেন:

:let buffer_count = NrBufs()
:echo buffer_count

২১ শে জুন নোট: আপনার যদি 2017 সালের হিসাবে ভিমের সাম্প্রতিক সংস্করণ থাকে তবে নীচের গিডের উত্তরটি সর্বোত্তম সমাধান is


1
অন্যরা যারা এটি খুঁজে পেয়েছে তাদের জন্য দ্রষ্টব্য: আমি মনে করি এটি 'যখন আমি> 0' হওয়া উচিত, যেহেতু বাফার সংখ্যা 1 থেকে শুরু হয় না 0 থেকে
মেটা

@ মিতা: আমি আমার উত্তর স্থির করেছি। ধন্যবাদ। যদিও এটি আসলে কোনও সমস্যা হয়ে উঠবে না কারণ সর্বদা কমপক্ষে একটি বাফার থাকবে।
হেপাটাইতে

3

আপনি সম্ভবত খুঁজছেন?

:echo(bufnr('$'))

এটি "কাউন্টিং" বাফারগুলি আনলোড করা হবে যেহেতু ভিম কখনই বাফার নম্বরটি পুনর্ব্যবহার করে না, আরও এটি হতে হবে: ইকো বুফনার ('$')
হেপ্টাইট

(ঠিক আছে, আপনার সংস্করণটি সর্বশেষ লোড হওয়া বাফারের সংখ্যাকে যথাযথভাবে প্রতিধ্বনিত করবে, তবে সিনট্যাক্সটি কিছুটা বিভ্রান্তিকর))
হিপটাইট

@ হেপটাইট - হ্যাঁ, এটি একটি ভুল ছিল। বাক্য গঠন সম্পর্কে, আমি উভয়ের মধ্যে কোনও পার্থক্য দেখছি না।
দাড়কাক

তারা একই কাজ করে, কিন্তু: প্রতিধ্বনি একটি কমান্ড এবং কোনও ফাংশন নয় এবং কোনও ফাংশনের মতো কখনও ব্যবহার করা যাবে না (যদি না আপনি নিজের ব্যবহারকারী-সংজ্ঞায়িত ফাংশনটি একটি: প্রতিধ্বনিতে আবৃত না করেন)। পার্থক্যটি ভিএমএল এর অনেক প্রসঙ্গে গুরুত্বপূর্ণ।
হেপাটাইট

@ হ্যাপটাইট - আমি অবশ্যই স্বীকার করব যে আপনি কী বলেছিলেন সে সম্পর্কে আমার কোনও ধারণা নেই ... (এখানে একটি নালী টেপ ইঞ্জিনিয়ার আরও বেশি; একটি "কোড কম সুন্দর" প্রোগ্রামার)
রক

2

আপনি যদি কমান্ড হিসাবে হেপিটাইটের সমাধান চান তবে নিম্নলিখিতটি আপনার .vimrc ফাইলে যুক্ত করুন:

command BufNum echo len(filter(range(1, bufnr('$')), 'buflisted(v:val)'))
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.