উত্তর:
কুইনসির উত্তরটি ভাল, তবে এটি করার একটি সঠিক উপায় রয়েছে যার জন্য বাফার সম্পাদনা করার প্রয়োজন নেই:
:%s/pattern//ng
এটি এমন বার্তা প্রিন্ট করবে 3 matches on 2 linesএবং আপনার বাফারে কোনও পরিবর্তন করা হবে না।
nপতাকা তোলে :substituteকমান্ড পরিবর্তে ম্যাচ সংখ্যা প্রিন্ট প্রকৃত প্রতিকল্পন করণ এর; gপতাকা প্রতি লাইনে একাধিক মিল প্রতিবেদন দেয়।
আপনার ব্যবহারের ক্ষেত্রে কার্যকর হতে পারে এমন আরেকটি জিনিস হ'ল কোনও প্যাটার্নের সাথে মেলে এমন সমস্ত লাইন মুদ্রণ করা:
:global/pattern/print
যা সংক্ষিপ্ত করা যেতে পারে:
:g/pattern
এটি :globalকমান্ডের অন্যতম সহজ ব্যবহার (যা মন-দমিয়ে রাখা শক্তিশালী)। এটি কেবল মেলে এমন সমস্ত লাইন মুদ্রণ করবে patternএবং তারপরে (যদি একাধিক লাইনের সাথে থাকে) আপনি চাপতে Enterবা অন্য কমান্ডটি টাইপ করে এটিকে দূরে সরিয়ে দেয়।
কিছুটা ট্রিভিয়া: এই আদেশটি হ'ল নামটির মূল grep, কারণ এটি সাধারণত হিসাবে বর্ণিত হয় g/re/p, যেখানে re"নিয়মিত অভিব্যক্তি" বোঝানো হয়।
g/re/pআসলে এসেছে ed, নয় vi। গ্রেপ কয়েক বছরের মধ্যে vi এর পূর্বাভাস দেয়।
nnoremap <leader>n :%s///gn<CR>ম্যাপিং আছে সুতরাং আমি <leader>nপূর্বে অনুসন্ধান করা প্যাটার্নটির উপস্থিতিগুলি গণনা করতে টিপুন । আমি প্রায়ই এটি আশ্চর্যজনকভাবে ব্যবহার করি use
:%s/pattern//nnশেষ পতাকা বলে :sকমান্ড ম্যাচ সংখ্যা প্রতিবেদন করতে এবং আসলে প্রতিস্থাপন না। :h :s_flagsবিস্তারিত জানতে পড়ুন ।
gn?
gযদি মনে করেন যে লাইন প্রতি একাধিক ম্যাচ থাকতে পারে, যা প্রায়শই সত্য। প্রশ্নের প্রয়োজনে তবে পতাকাটি nআরও গুরুত্বপূর্ণ।
প্রথমে /একটি রেজেক্স অনুসন্ধান করার জন্য প্রথমে ব্যবহার করুন
:%s///gn
এটি ধূর্বর জবাবের সমান, এটি বাদে ক।) ব্যবহার করা সহজ (যেহেতু আপনার রেজেক্স প্রথমে কী মিলছে তার ফলাফলগুলি আপনি পূর্বরূপ দেখতে পারেন) এবং খ।) সমস্ত উপস্থিতি gগণনা করার জন্য বিশ্বব্যাপী পতাকাটির সাথে মিল রয়েছে ।
এই পিআর https://github.com/vim/vim/pull/4317 কে ধন্যবাদ , প্রতিটি অনুসন্ধান কমান্ড অনুসন্ধানের পরিসংখ্যানগুলি (বর্তমান ম্যাচের অবস্থানের মতো, এবং ম্যাচের সংখ্যার মতো) ভিএম 8.1.1270 তে দেখায়। Sপরিবর্তনশীল থেকে অপসারণ নিশ্চিত করুন shortmess।
:%s/pattern//g
আপনি স্ট্যাটাস বারে বিকল্পের সংখ্যা দেখতে পাবেন। এভাবেই বহুবার patternউপস্থিত হয়। তারপরে কেবল uবিকল্পগুলি পূর্বাবস্থায় ফিরিয়ে আনতে টিপুন ।
আমি এখানে উত্তরগুলির উপর ভিত্তি করে আমার .vimrc এ একটি ম্যাপিং যুক্ত করেছি:
" count nr of occurrences of word under cursor
nnoremap <leader>c :%s/<c-r><c-w>//gn<cr>
" count nr of occurrences of visual selection
vnoremap <leader>c :<c-u>%s/<c-r>*//gn<cr>
কিছুটা ব্যাখ্যা, আশা করি নতুন ভিমারদের জন্য সহায়ক:
<c-r><c-w> কমান্ড লাইনে কার্সারের নীচে শব্দটি সন্নিবেশ করানো হয়েছে, অনেক ক্ষেত্রে ব্যবহারযোগ্য।
<c-u>মুছে ফেলার জন্য স্বয়ংক্রিয়ভাবে সন্নিবেশিত প্রয়োজন হয় '<,'>
যখন টিপে :চাক্ষুষ মোডে কমান্ড লাইন যাচ্ছে।
*রেজিস্টার, (শেষ) চাক্ষুষ নির্বাচন রয়েছে <c-r>*
বিষয়বস্তু সন্নিবেশ *(এছাড়াও সন্নিবেশ মোডে ব্যবহার করা যেতে পারে) কমান্ড লাইনে রেজিস্টার।
:h count-items