2008-09-25 3 views
7

में उन्नत खोज विम में एक साथ कई तारों को खोजने का कोई तरीका है? मुझे कहीं पढ़ना याद है कि यह संभव था लेकिन किसी भी तरह तकनीक को भूल गया।विम

तो उदाहरण के लिए, मेरे पास एक टेक्स्ट फ़ाइल है और मैं एक साथ "foo" और "bar" खोजना चाहता हूं (जरूरी नहीं कि एक स्ट्रिंग के रूप में, पूरी तरह से अलग-अलग लाइनों में हो)।

मैं इसे कैसे प्राप्त करूं?

उत्तर

15
/^joe.*fred.*bill/   : find joe AND fred AND Bill (Joe at start of line) 
/fred\|joe     : Search for FRED OR JOE 
+0

यह भी काम करता है। और –

+0

से नीचे दिए गए पैरांथेटिकल उत्तर से कहीं अधिक सरल है, अगर केवल मुझे यह पता चला ... :( – ojblass

-3
/(foo|bar) 
+1

भाग निकले जा करने के लिए है कि आप बार और कोष्ठकों से बचने के लिए की जरूरत है:/\\ (foo \ | बार \\) लेकिन किसी भी तरह से, इस मामले में उन्हें समूह करने की कोई ज़रूरत नहीं है!/foo \ | बार – wilhelmtell

0

विम एक '/' के साथ कमांड मोड में प्रारंभ करके नियमित अभिव्यक्तियों का समर्थन करता है।

तो "/ (foo \ | bar)" (जैसा कि पहले बताया गया था) जैसे कुछ का उपयोग समस्या को हल करेगा। यह जानना अच्छा है कि यह क्यों काम करता है और आप क्या उपयोग कर रहे हैं (नियमित अभिव्यक्ति)।

2

असल में मैं के बाद जल्द ही मैं इस पोस्ट जवाब मिला (हाँ मैं गूगल पहले किया था, लेकिन यह पता लगाने में असमर्थ था। शायद सिर्फ गलत खोज रहा था)

सही समाधान है

/(foo \ | बार)

@Paul बेट्स: पाइप डिफ़ॉल्ट रूप से

+0

मुझे लगता है कि कुछ RegExp बोलीभाषाओं में पाइप से बचने की आवश्यकता है और अन्य नहीं। –

+0

यह vi – jop

+0

हाँ में आवश्यक है .. मैं सहमत हूं कि वीआई में इसकी आवश्यकता है, लेकिन पात्रों से बचने के लिए बहुत असंगत है और किसी अन्य कार्यान्वयन में उस टुकड़े को सीधे कॉपी करने का प्रयास करना चाहिए। –