বাফারটিকে চিহ্নিত না করে ভিমে গণনা করার ঘটনাটি পরিবর্তিত হয়েছে


111

বর্তমান বাফারে একটি প্যাটার্নটি কতবার বিদ্যমান তা জানতে, আমি এটি করি:

:%s/pattern-here/pattern-here/g

এটি প্যাটার্নের সংঘটনগুলির সংখ্যা দেয় তবে এটি স্পষ্টতই জটিল এবং এতে 'পরিবর্তিত' স্থিতি নির্ধারণের পার্শ্ব-প্রতিক্রিয়াও রয়েছে।

গুনতে আরও কি মার্জিত উপায় আছে?

উত্তর:


166

প্রতিস্থাপন এড়াতে, দ্বিতীয় প্যাটার্নটি খালি ছেড়ে দিন এবং "এন" পতাকাটি যুক্ত করুন:

:%s/pattern-here//gn

এটি একটি সরকারী পরামর্শ হিসাবে বর্ণনা করা হয় ।


8
আরও জটিল, তবে কমপক্ষে এটি এখন সরকারী যে কোনও মার্জিত উপায় নেই ...
পল ওয়েস্টার

53
আপনি যদি ইতিমধ্যে / ব্যবহার করে কোনও অনুসন্ধান সম্পাদন করে থাকেন তবে তা ঠিক হয়ে যায়:% s /// জিএন
পিটার গিবসন

সুতরাং এটি কেবল আপনার
.vimrc- এ

3
আমি ম্যাপিংয়ের পরে নিম্নলিখিতটি বেশ দরকারী বলে খুঁজে পেয়েছি: nnoremap <leader>n :%s///gn <CR>সর্বশেষ অনুসন্ধানের ঘটনাগুলি গণনা করার জন্য
ইকার পোহোরস্কে

1
এই গণনাটি ভেরিয়েবলের মধ্যে যাওয়ার কোনও উপায় নেই? এটাই আমার দরকার ...
স্টিভেন লু

8
:help count-items

ভিআইএম .3.৩ এ, আপনি এটি কীভাবে করেন তা এখানে here

:set report=0
:%s/your_word/&/g    # returns the count without substitution

ভিআইএম .2.২ এ আপনি এটি কীভাবে করবেন তা এখানে রয়েছে:

:%s/your_word/&/gn   # returns the count, n flag avoids substitution

আমার একটি বড় ফাইল ছিল এবং এই পদ্ধতির অনুসরণ করা গ্রেপের চেয়ে অনেক দ্রুত ছিল।
জয় প্রকাশ

5
:!cat %| grep -c "pattern"

এটি হুবহু ভিএম কমান্ড নয়, তবে এটি আপনাকে উইম থেকে যা প্রয়োজন তা আপনাকে দেবে।
আপনার যদি এটি ঘন ঘন ব্যবহার করার প্রয়োজন হয় তবে আপনি এটিকে কমান্ডে ম্যাপ করতে পারেন।


7
আরও সহজভাবে:!grep -c "pattern" %
ইয়াজেল

2

ভিমস্ক্রিপ্ট ইনডেক্সডস অনুসন্ধান "এম ম্যাচগুলির মধ্যে # ম্যাচে #N" প্রদর্শন করার জন্য ভিম অনুসন্ধান কমান্ডগুলিকে বাড়িয়ে তোলে।


1

আপনি যে শব্দটি গণনা করতে চান এবং তাতে নিম্নলিখিতটি কার্যকর করতে চান তাতে কার্সারটি রেখে দিন।

:%s/<c-r><c-w>//gn

দেখা :h c_ctrl-r_ctrl-w


-1

vimgrep এখানে আপনার বন্ধু:

vimgrep pattern %

শো:

(1 of 37)

7
এটি ঘটনাগুলি গণনা করে না, তবে প্যাটার্নযুক্ত লাইন গণনা করে। সুতরাং যদি প্যাটার্নটি একটি লাইনে দুবার occers হয় তবে এটি কেবল একবার গণনা করা হবে।
sotto
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.