2010-07-16 9 views
29

मुझे पता है कि विम के प्रतिस्थापन आदेश के साथ आप विशिष्ट लाइनों की एक श्रृंखला कर सकते हैं:वीआईएम: केवल विशिष्ट पंक्ति संख्याओं के बीच खोजें?

:12,24s/search/replace 

मैं भी सामान्य खोजों के साथ एक सीमा निर्दिष्ट करने के लिए सक्षम होना चाहते हैं। जैसे

:12,24/search 

कि चूंकि कुछ काम करने के लिए (कम से कम मेरी विम विन्यास पर) नहीं लगता है, किसी को भी यह कैसे प्राप्त करने के लिए पता है?

धन्यवाद।

उत्तर

24
:help search-range 

और फिर

:help /\%>l 
तो अनिवार्य रूप से

:

/\%>12l\%<24lsearch 
+0

मैं देख रहा हूँ कि क्या यह करने के लिए जोड़ता है: शुरू, बंद करो/पैटर्न/एस/TGT कार्ल द्वारा प्रस्तावित/प्रतिलिपि/पैटर्न। – chernevik

+7

@chernevik: उत्तरों के टाइमस्टैम्प की जांच करें। – akira

+0

^'सही तरीके' के लिए। विम एक कार्य पूरा करने के कई तरीके दे सकते हैं। – 0xc0de

32

अकीरा से महान जवाब। लेकिन कुछ खोदने के बाद, मुझे एक विकल्प मिला। यह रूप में सुरुचिपूर्ण लेकिन में टाइप करने के लिए आसान नहीं है:

:12,24g/search/ 

यह आपको एक कष्टप्रद शीघ्र दे देंगे, लेकिन यह मांग की स्ट्रिंग वाली सीमा के भीतर पहली पंक्ति पर खत्म हो जाएगा।

+0

यह बिना किसी तत्काल परेशानी के मेरे लिए काम किया। तो आदेश << 195,208g/प्रिंट/एस/$/# डीबग/>> 195 से 208 तक 'प्रिंट' वाली लाइनों में '# डीबग' संलग्न किया गया है, और केवल उन पंक्तियों को। शायद एक संस्करण मुद्दा? मैं वीआईएम 7.2.330 का उपयोग कर रहा हूँ। – chernevik

+0

7.3 यहां, और यह कहता है 'जारी रखने के लिए ENTER दबाएं या टाइप करें।' मैं यह कहने के लिए विम में पर्याप्त रूप से पर्याप्त नहीं हूं कि मतभेद कहां से आ सकते हैं। –

16

क्या आपको वास्तव में लाइन नंबर की आवश्यकता है? एक और तरीका दृष्टि से सीमा का चयन करने के लिए हो सकता है।

  1. ESC वी, वी या जो कुछ भी
  2. प्रेस का उपयोग कर सीमा पहले से चयनित श्रेणी में 'what_to_search' के लिए खोज करने के लिए /\%Vwhat_to_search का उपयोग कर
  3. खोज अचयनित करने के लिए सीमा का चयन करें।

यह टाइप करने के लिए कम है, लेकिन आप ;-)

देखें लिए सीधे तौर पर क्या कहा है नहीं है: मदद% वी

[संपादित करें] ग्रेट, रेंज खोज करने के लिए है कि मैं सिर्फ सीखा है किसी अन्य श्रेणी का चयन करके खोज करने के बाद बदला जा सकता है, ईएससी दबाकर और फिर दोहराने के लिए एन दबाकर इस श्रेणी को अचयनित करें। विम सुखद आश्चर्य के लिए वास्तव में हमेशा अच्छा है।

15

प्रतिस्थापन आदेश का उपयोग करते रहें, लेकिन gc झंडे को अपने मूल उदाहरण में संलग्न करें। 'सी' ध्वज के साथ आदेश: "विकल्प"

:12,24s/search//gc

:help search-range

[एक सीमा के भीतर खोज करने के लिए] से का उपयोग करें।

उदाहरण: :.,300s/Pattern//gc

यह आदेश "पैटर्न" के लिए लाइन 300 तक कर्सर की स्थिति से खोज करेंगे।मैच में, आप 'q' को रोकने के लिए टाइप कर सकते हैं, या '0' अगले मिलान को ढूंढ सकते हैं।

3

अगर वहाँ के निशान ए और बी का कहना है, तो खोज एक के बीच क्षेत्र तक ही सीमित किया जा सकता है और ख

/\%>'a\%<'bSearchText 

इस का उपयोग कर एक CMAP

cmap vmsab /\%>'a\%<'b 
cmap vmscd /\%>'c\%<'d 
0

का उपयोग के साथ सरल किया जा सकता Narrow Region plugin हम

:900,1000NarrowRegion 
को खोजने या बदलने के लिए आवश्यक सीमा के साथ एक अस्थायी बफर खोल सकते हैं

फिर हम एक खोज

/thing 

या एक परिवर्तन meke और बफर लिख सकते हैं वापस

:%s/this/that/g 
:wq 
संबंधित मुद्दे