कोड के एक भाग के लिए परिचालन को प्रतिबंधित करना


10

मेरे दिन-प्रतिदिन के कार्य जीवन में कई बार मुझे एक विशिष्ट कार्य पर काम करना पड़ता है, एक चर को उजागर करना या खोजना जैसी चीजें, लेकिन मैं संपादन / खोज के दायरे को सीमित करने में कभी कामयाब नहीं रहा।

क्या चयनात्मक रूप से कहने का एक तरीका है, $colorब्रेसिज़ के इन सेटों के अंदर के सभी संदर्भों को खोजें , या यह तह आदि। यदि संभव हो तो, यह आदर्श होगा कि यह अपेक्षाकृत सामान्य है, ताकि इसे पाठ के संपादन / प्रतिस्थापन पर लागू किया जा सके।

उदहारण के लिए:

$color = "#fff";
function PickColor () {
  $color = "#bbb";
  $newColors = ["#000", "#fbf", $color];
  foreach ($newColors as $c) {
    if ($c == "#fff") {
       break;
    }
  }
}
$differentColor = $color;

यह कोड एक अपेक्षाकृत खराब उदाहरण है, हालांकि, अगर मुझे $ रंग के सभी उदाहरणों को बदलने की आवश्यकता है, तो फ़ंक्शन पिकचोलर के संदर्भ में कोई ऐसा कैसे करेगा। एक और उदाहरण के रूप में, का उपयोग करते हुए #और *आप उस पाठ वस्तु के अगले उदाहरण, तुम कैसे सिर्फ इस समारोह (मूल रूप से खोज लपेटकर) के लिए खोज के लिए दायरा सीमित होता पूरी फ़ाइल के लिए विरोध किया जो लाइनों और खोने के हजारों अवधि सकता है पर जा सकते हैं आपके स्थान, या गलत तरीके से किसी अन्य फ़ंक्शन में कुछ जगह है जो आपके पास नहीं होना चाहिए?

जवाबों:


15

इसे करने के कुछ तरीके यहां दिए गए हैं।

1  | $color = "#fff";
2  | function PickColor () {
3  |     $color = "#bbb";
4  |     $newColors = ["#000", "#fbf", $color];
5  |     foreach ($newColors as $c) {
6  |         if ($c == "#fff") {
7  |             break;
8  |         }
9  |     }
10 | }
11 | $differentColor = $color;

मैंने आपके उदाहरण को पंक्ति संख्याओं को शामिल करने के लिए संशोधित किया है।

तो अब आप निम्न तरीकों से $color, उदाहरणों के साथ प्रतिस्थापित कर सकते $newColorहैं।

लाइन नंबर रेंज

:1,11s/\$color/$newColor/g

यह प्रतिस्थापन को 1-11 समावेशी लाइनों पर संचालित करता है।

सापेक्ष रेखा रंग

अपने कर्सर को लाइन 1 पर रखें, फिर ...

:.,11s/\$color/$newColor/g

यह कहता है कि सीमा वर्तमान रेखा से शुरू होती है और पंक्ति 11 पर समाप्त होती है।

दृश्य चयन रेंज

पंक्ति 1 पर जाएं और Shift+Vफिर दबाएं G। यह नेत्रहीन लाइन 1. का चयन करता है ...

:'<,'>:s/\$color/$newColor/g

यह आपके चयन द्वारा कवर की गई श्रेणी के प्रतिस्थापन को सीमित करता है। '<,'>जब आप :एक सक्रिय चयन के साथ दबाते हैं तो विम स्वचालित रूप से आपके लिए सीमा सम्मिलित करेगा ।


मुझे विम से प्यार है, जीवन को आसान बनाने और दैनिक आधार पर सीखने और खोजने के लिए हमेशा कुछ होता है :)
काइल मैकगिल

6

यदि आप प्लगइन मार्ग लेने में सहज हैं, तो NrrwRgn है

आप नेत्रहीन एक ब्लॉक का चयन करते हैं, फिर :NRकमांड चलाते हैं , जो चयनित पाठ के साथ एक नया बफर (एक विभाजन में) खोलता है। आप इस बफर में संशोधन कर सकते हैं, और जब आप इसे सहेजते हैं, तो यह मूल फ़ाइल में भी वापस सहेजा जाता है।

मेरी राय में, यह प्लगइन समस्या को बहुत अच्छी तरह से हल करता है, जिससे आप उन कार्यों पर ध्यान केंद्रित कर सकते हैं जिन्हें आप बिना किसी सोच-विचार के करना चाहते हैं कि उन्हें एक विशिष्ट सीमा तक कैसे लागू किया जाए।


यह उन प्लगइन्स में से एक है जिसकी मैं कसम खाता हूं .. यह थोड़ा स्क्रैच बफर होने जैसा है जिसे आप अपनी सामान्य कोड फ़ाइल पर वापस कर सकते हैं।
10

3

आप दृश्य ब्लॉक मोड (शिफ्ट + वी) में रुचि रखने वाले ब्लॉक का चयन करते हैं और फिर आप टाइप करते हैं :और आपकी कमांड जो अब ब्लॉक पर लागू होगी।

इसलिए यदि आप चयन में प्रतिस्थापित करना चाहते हैं, तो आप चला सकते हैं :s/string/replacement_string


सही; जैसे,VaB:s/\$color/replaced/g
wchargin

सिर्फ इतना कहा कि, अच्छी बात है :)
स्टीफन डोरुंगा

0

ब्रेसिज़ टेक्स्ट ऑब्जेक्ट '}' का उपयोग करें और 'i}' के साथ ब्रेसिज़ के अंदर चुनें

फ़ंक्शन के उद्घाटन घुंघराले ब्रेस के साथ लाइन पर:

$<C-V>i}:s/\$color/$newColor/g

पहले पंक्ति के अंत में जाएं (जो कि ब्रेस पर या अंदर होगा) फिर विजुअल सेलेक्ट में जाने के लिए, फिर ब्रेसेस टेक्स्ट ऑब्जेक्ट का उपयोग करके चयन करें। 'i}' ब्रेसिज़ के अंदर है 'a a' 'ब्रेसिज़ के आसपास है।

उन भाषाओं के लिए जिनमें ब्रेसिज़ की कमी है, विम टेक्स्ट ऑब्जेक्ट: निश्चित गाइड कुछ प्लगइन्स का सुझाव देता है:

  • पायथन और कॉफ़ीस्क्रिप्ट जैसी भाषाओं के लिए, इंडेंट ऑब्जेक्ट इंडेंटेशन स्तर के आधार पर टेक्स्ट ऑब्जेक्ट प्रदान करता है: aiइसमें वर्तमान इंडेंटेशन स्तर और ऊपर की रेखा शामिल है; iiऊपर लाइन को छोड़कर वर्तमान इंडेंटेशन स्तर शामिल है।
  • रूबी ब्लॉक कीवर्ड की उपस्थिति के आधार पर, टेक्स्ट ऑब्जेक्ट्स के लिए समर्थन जोड़ता है arऔर ।irend
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.