2010-05-27 10 views
12
में कोड के लिए खोज गुंजाइश सीमित

मैं कैसे समारोह/कक्षा/कोड ब्लॉक कि कर्सर में है करने के लिए विम में खोज दायरा सीमित कर सकते हैं, यह पता लगाने की क्या लाइन नंबर दिए गए हैं बिना? दृश्य चयन में खोज करने में सक्षम होने के कारण, वर्तमान कोड ब्लॉक का चयन करने के तरीके भी हैं।विम

(this सवाल की तरह, लेकिन अधिक सामान्य)

उत्तर

12

मैं बस कॉपी और "Searching with/and ?" (within a visual selection) from the Vim Tips Wiki की संपूर्ण सामग्री चस्पा करने के लिए जा रहा हूँ।

दृश्य मोड में, / और ? किसी भी अन्य कर्सर-मूवमेंट कमांड ( ) दृश्य मोड में, खोज को विस्तारित करने के दृश्य दृश्य चयन के रूप में दृश्य चयन को अपडेट करेगा।

आदेश वास्तव में दृश्य चयन के भीतर खोज करने के लिए, आपको उपयोग करने के लिए \%V परमाणु, या मार्कर का उपयोग की आवश्यकता होगी \%>'< और \%<'> परमाणुओं के साथ दृश्य चयन द्वारा परिभाषित किया गया। यह सबसे अच्छा अपनी खोज को प्रवेश करने से पहले Escसाथ दृश्य चयन को छोड़ कर किया जाता है। दृश्य चयन को स्वचालित रूप से छोड़ने के लिए मैपिंग पर विचार करना चाहें और उपयुक्त परमाणु दर्ज करें। उदाहरण के लिए: - क्रम : के साथ एक पूर्व आदेश का उपयोग सिर्फ आपकी खोज के लिए एक "सीमा" में स्वचालित रूप से भरने के लिए /

:vnoremap <M-/> <Esc>/\%V 

इस मानचित्रण का उपयोग करके आप Alt दबा सकते हैं। का उपयोग करने के लिए, ब्याज की पहली पंक्ति पर जाएं और V लाइन-वार दृश्य चयन शुरू करने के लिए दबाएं। (एक लाइन या } एक पैरा के लिए, आदि के लिए प्रेस जे) नीचे ले जाएँ। जब आपके पास उस क्षेत्र का चयन किया गया है जिसे आप खोजना चाहते हैं, दबाएं Alt - /। दृश्य चयन हटा दिया जाएगा, और एक खोज कमांड प्रारंभ होगा। आप देखेंगे:

/\%V 

जोड़े क्या आप ढूंढना चाहते हैं, उसके बाद दर्ज करें। उदाहरण के लिए, आप हरी प्रवेश कर सकते हैं और देखते हैं: प्रत्येक घटना "हरी" की

/\%Vgreen 

जब आप प्रेस दर्ज करें, पर प्रकाश डाला जाएगा, लेकिन केवल क्षेत्र है कि आप था पहले से चयनित में।

यहाँ दो और उदाहरण है कि एक दृश्य चयन का उपयोग नहीं कर रहे हैं। पहले कमांड केवल 10 से 20 समावेशी पंक्तियों में खोज करता है। दूसरी खोज केवल अंकों के बीच ए और बी के बीच होती है।

/\%>9l\%<21lgreen 
/\%>'a\%<'bgreen 
+0

मुझे लगता है कि मिल गया है चाहिए। * Facepalm * – Walter

1

संक्षिप्तता के लिए:

" tldr; 
v i { <ESC> /\%Vsearch-term 

" Search for search-term within the current code block (defined by curly braces {}). 
" Begin in normal mode, then enter the following: 

" enter visual mode 
v 

" look for stuff in-between the current... 
i 

" curly braces enclosure 
{ 

" (now the enclosure should be highlighted) 

" exit visual mode 
<ESC> 

" search the last visual mode selection for search-term 
/\%Vsearch-term 

" note: to search within other enclosures, you can substitute curly braces for: 
" - parenthesis, 
" - square brackets, 
" - or other enclosure pair characters