बफर को चिह्नित किए बिना विम में होने वाली गणनाएं बदल गईं


111

वर्तमान बफर में पैटर्न कितनी बार मौजूद है, यह जानने के लिए, मैं यह करता हूं:

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

यह पैटर्न की घटनाओं की संख्या देता है, लेकिन स्पष्ट रूप से बोझिल है और 'परिवर्तित' स्थिति को सेट करने का दुष्प्रभाव भी है।

क्या गिनती करने का एक और अधिक सुरुचिपूर्ण तरीका है?

जवाबों:


166

प्रतिस्थापन से बचने के लिए, दूसरा पैटर्न खाली छोड़ दें, और "n" ध्वज जोड़ें:

:%s/pattern-here//gn

इसे आधिकारिक टिप के रूप में वर्णित किया गया है ।


8
और भी अधिक बोझिल, लेकिन कम से कम अब यह आधिकारिक है कि कोई सुंदर तरीका नहीं है ...
पॉल ऑइस्टर

53
यदि आपने पहले से ही खोज का उपयोग किया है /, तो यह बस हो जाता है:% s /// gn
पीटर गिब्सन

तो बस इसे अपने .vimrc
JESii

3
मैं मैपिंग के बाद काफी उपयोगी पाया गया: nnoremap <leader>n :%s///gn <CR>अंतिम खोज की घटनाओं को गिनने के लिए
Ikar Pohorský

1
इस गणना को चर चर में बनाने का कोई तरीका नहीं है? मुझे यही चाहिए ...
स्टीवन लू

8
:help count-items

वीआईएम 6.3 में, यहां बताया गया है कि आप इसे कैसे करते हैं।

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

VIM 7.2 में, यहां बताया गया है कि आप इसे कैसे करेंगे:

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

मेरे पास एक बड़ी फाइल थी और इस दृष्टिकोण का अनुसरण grep की तुलना में बहुत तेज था।
जय प्रकाश

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

यह पूरी तरह से कमांड नहीं है, लेकिन यह आपको वह देगा जो आपको विम से चाहिए।
यदि आप इसे अक्सर उपयोग करने की आवश्यकता है, तो आप इसे कमांड में मैप कर सकते हैं।


7
अधिक बस:!grep -c "pattern" %
Iazel

2

Vimscript IndexedSearch , Vim खोज आदेशों को "M मैचों में #N मैच से बाहर" प्रदर्शित करने के लिए बढ़ाता है।


1

कर्सर को उस शब्द पर रखें जिसे आप गिनना चाहते हैं और निम्नलिखित पर अमल करना चाहते हैं।

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

देख :h c_ctrl-r_ctrl-w


-1

vimgrep यहां आपका मित्र है:

vimgrep pattern %

दिखाता है:

(1 of 37)

7
यह घटनाओं की गणना नहीं करता है, लेकिन पैटर्न वाली रेखाओं को गिनता है। इसलिए यदि पैटर्न एक पंक्ति में दो बार होता है, तो इसे केवल एक बार गिना जाएगा।
Sotto
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.