यह दो तरह से पूरा किया जा सकता है, विशुद्ध रूप से रास्ता और wc
तरीका।
शुद्ध विम रास्ता
ऐसा करने के लिए आप खोज का उपयोग कर सकते हैं और कमांड को बदल सकते हैं। उदाहरण के लिए:
:%s/\<\w\{-}\>//gn
यह किसी चीज़ के साथ दिए गए पैटर्न को बदलने के बजाय क्या करता है, यह सिर्फ पैटर्न की घटनाओं को गिनता है। इसकी वजह है n
झंडा। शब्दों को एक विशिष्ट खंड में गिनने के लिए (इस स्थिति में 5 को 15 के माध्यम से), आप कुछ इस तरह से कर सकते हैं:
:5,15s/\<\w\{-}\>//gn
यह एक चयन की सामग्री को एक रजिस्टर में जमा करने की आवश्यकता को हटा देता है। इसके स्थान पर क्या किया जा सकता है 5-15
, इसके लिए अधिक संभावनाएं देखने के लिए , सहायता विषय पढ़ें cmdline-ranges
। यदि आप अक्सर ऐसा करना चाहते हैं, तो संभवतः इसके लिए मैपिंग (या कमांड) बनाना अच्छा है। इसके अलावा, यदि आपने hlsearch
सक्षम किया है, तो आप :nohlsearch
हाइलाइटिंग को खाली करने के लिए बाद में चलाना चाह सकते हैं ।
जिस wc
तरह से
एक ही चीज से पूरा किया जा सकता है wc
। उसी तरह से आप कमांड के cmdline-ranges
साथ क्षेत्र का चयन करने के लिए उपयोग कर सकते हैं :s
, आप बाहरी कमांड के साथ उनका उपयोग कर सकते हैं। उदाहरण के लिए:
:5,15!wc -w
यह wc
कमांड के माध्यम से 15 के माध्यम से 5 लाइनों को चलाता है । इसका नकारात्मक पक्ष यह है कि यह कमांड के आउटपुट के साथ लाइनों की उस श्रेणी को बदल देता है। आप दबाकर इस परिवर्तन को पूर्ववत कर सकते हैं u
। यह भी ध्यान दें कि विम्सस्क्रिप्ट समाधान विभिन्न भाषाओं के साथ काम नहीं कर सकता है, क्योंकि \w
यह मेल नहीं खाता है कि सामान्य रूप से अन्य भाषाओं में शब्द वर्ण क्या होंगे। wc
इससे बेहतर कर सकते हैं \w
। इसके अलावा, यहाँ यह करने के लिए इसे तेज करने के लिए एक फैंसी कमांड है:
command -range=% -addr=lines WordCount execute '<count>!wc -w' | .y a | undo | echo @a
ध्यान दें कि यह a
रजिस्टर को देखता है ।
ध्यान दें
ऐसा प्रतीत होता है कि यह g<C-g>
कुंजी संयोजन के साथ दृश्य मोड में भी पूरा किया जा सकता है । इस की व्याख्या के लिए कार्पेटस्मोकर का जवाब देखें।