मैं एक स्ट्रिंग की खोज करना चाहता हूं और vi संपादक का उपयोग करके फ़ाइल में होने वाली घटनाओं की संख्या का पता लगाना चाहता हूं।
मैं एक स्ट्रिंग की खोज करना चाहता हूं और vi संपादक का उपयोग करके फ़ाइल में होने वाली घटनाओं की संख्या का पता लगाना चाहता हूं।
जवाबों:
:g/xxxx/d
यह पैटर्न के साथ सभी लाइनों को हटा देगा, और रिपोर्ट करेगा कि कितने हटाए गए हैं। उन्हें वापस पाने के लिए पूर्ववत करें।
रास्ता है
:% S / पैटर्न // GN
आपको n
ध्वज की आवश्यकता है । शब्दों के उपयोग की गणना करने के लिए:
:%s/\i\+/&/gn
और एक विशेष शब्द:
:%s/the/&/gn
count-items
प्रलेखन अनुभाग देखें ।
यदि आप बस में टाइप करते हैं:
%s/pattern/pattern/g
तब स्टेटस लाइन आपको vi में मैचों की संख्या भी प्रदान करेगा।
(गुस्तावो ने कहा, लेकिन इसके अतिरिक्त:)
किसी भी पूर्व खोज के लिए, आप बस कर सकते हैं:
:%s///gn
एक पैटर्न की आवश्यकता नहीं है, क्योंकि यह पहले से ही खोज-रजिस्टर ( @/
) में है।
"%" - s/
पूरी फ़ाइल
"g" में करें - वैश्विक खोज करें (एक पंक्ति में कई हिट के साथ)
"n" - किसी भी प्रतिस्थापन को रोकता है s/
- कुछ भी नहीं हटाया जाता है! कुछ भी नहीं पूर्ववत होना चाहिए!
(देखें: :help s_flag
अधिक जानकारी के लिए)
(इस तरह, यह " नेत्रहीन चयनित पाठ के लिए खोज " के साथ पूरी तरह से काम करता है , जैसा कि विम-विकिया टिप 171 में वर्णित है )
उपयोग
:% S / पैटर्न / \ 0 / जी
जब पैटर्न स्ट्रिंग बहुत लंबा है और आप इसे फिर से टाइप करना पसंद नहीं करते हैं।
संक्षिप्त उत्तर :
:% S / स्ट्रिंग-टू-बी-खोजा गया // GN
सीखने के लिए :
नीचे के रूप में VI संपादक में 3 मोड हैं
:
आप से प्रवेश कर रहे हैं Command
करने के लिए Command-line
मोड। अब आप जो कुछ भी लिखते हैं :
वह CLI (कमांड लाइन इंटरफेस) पर है%s
सभी पंक्तियों को निर्दिष्ट करता है। रेंज को निर्दिष्ट करने का %
मतलब है कि पूरी फ़ाइल में प्रतिस्थापन करें। सभी घटनाओं के लिए सिंटैक्स प्रतिस्थापन है:%s/old-text/new-text/g
g
लाइन में सभी घटनाओं को निर्दिष्ट करता है। g
ध्वज के साथ , आप पूरी पंक्ति को प्रतिस्थापित कर सकते हैं। यदि इस g
ध्वज का उपयोग नहीं किया जाता है, तो लाइन में केवल पहली घटना को प्रतिस्थापित किया जाएगा।n
घटनाओं की आउटपुट संख्या को निर्दिष्ट करता है //
डबल स्लैश की चूक का प्रतिनिधित्व करता है replacement text
। क्योंकि हम सिर्फ खोजना चाहते हैं।एक बार घटनाओं की संख्या मिल जाने पर, आप N
एक-एक करके घटनाओं को देखने के लिए कुंजी दबा सकते हैं।
लाइन नंबर 1 से 10 की विशेष श्रेणी में खोजने और गिनने के लिए:
: 1,10s / हैलो // GN
%
पूरी फाइल के लिए ,
अलग लाइन नंबरों की प्रतिकृति है । लाइन नंबर 1 से 10 के विशेष रेंज में खोजने और बदलने के लिए:
: 1,10s / मेरा अनुरोध स्वीकार / हैलो / GN
मेरा सुझाव है:
*
कर्सर के नीचे क्या है के लिए या तो "बाउंडेड खोज" करें या एक मानक /pattern
खोज करें।:%s///gn
घटनाओं की संख्या प्राप्त करने के लिए उपयोग करें । या आप :%s///n
घटनाओं के साथ लाइनों की संख्या प्राप्त करने के लिए उपयोग कर सकते हैं ।** मैं वास्तव में हर खोज के साथ " एन 1 एन पर एन 2 लाइनों" का संदेश देने वाला प्लग-इन ढूंढ सकता हूं , लेकिन अफसोस।
नोट: आउटपुट के मुश्किल शब्दों से भ्रमित मत हो। पूर्व कमान आपको कुछ दे सकती है जैसे 4 matches on 3 lines
कि बाद वाला आपको दे सकता है 3 matches on 3 lines
। जबकि तकनीकी रूप से सटीक, उत्तरार्द्ध भ्रामक है और इसे '3 लाइन मैच' कहना चाहिए। इसलिए, जैसा कि आप देख सकते हैं, वास्तव में बाद वाले ('एन' केवल) फॉर्म का उपयोग करने की कोई आवश्यकता नहीं है। आपको एक ही जानकारी मिलती है, और अधिक स्पष्ट रूप से, और 'gn' फ़ॉर्म का उपयोग करके।
:g/xxxx/d
) भयानक, खतरनाक और दूसरों से हीन है। कृपया इसे अचयनित करें।