vim: प्रतिस्थापित कमांड में खोज से स्ट्रिंग का उपयोग करें


16

मैं अक्सर /अपने नियमित भावों को सत्यापित करने के लिए विम खोज आदेश का उपयोग करता हूं (बस यह देखने के लिए कि यह क्या मेल खाता है)। उसके बाद मैं आम तौर पर :%sप्रतिस्थापित कमांड का उपयोग करता हूं, जहां मैं उस रीजैक्सप को खोज से स्ट्रिंग के रूप में बदलने के लिए उपयोग करता हूं, जैसे मैं पहली बार ऐसे स्ट्रिंग को देखता हूं:

/TP-\(\d\{5\}\)-DD-\d\{3\}

यह ठीक उसी तरह से मेल खाता है जैसा मैं चाहता हूं, इसलिए मैं अपनी जगह लेता हूं:

:%s/TP-\(\d\{5\}\)-DD-\d\{3\}/\1/g

लेकिन मुझे फिर से पूरे रेगेक्सप को यहां लिखना होगा। आमतौर पर कि रेग्जाप बहुत लंबा होता है, इसीलिए मैं इसका समाधान ढूंढ रहा हूं:

क्या उस खोज पैटर्न को सीधे कमांड में बदलने के लिए कोई मौजूदा शॉर्टकट या विम स्क्रिप्ट है?

मैं टर्मिनल (कोई gvim) में विम का उपयोग करता हूं।

जवाबों:


20

सामान्य तौर पर, एक खाली नियमित अभिव्यक्ति का अर्थ है पहले से दर्ज की गई नियमित अभिव्यक्ति का उपयोग :%s//\1/gकरना , इसलिए आपको वही करना चाहिए जो आप चाहते हैं।


वाह, यह इतना आसान है! वास्तव में मुझे क्या चाहिए, धन्यवाद।
kars7e

10
इसके अलावा, अगर आप यह सत्यापित या पिछली बार उपयोग पैटर्न में बदलाव करना चाहते हैं, तो आप उपयोग कर सकते हैं नियंत्रण-r तो /की सामग्री सम्मिलित करने (खोज पैटर्न रजिस्टर /) सीधे एक आंशिक रूप से टाइप किया कमांड लाइन में (उदाहरण के लिए सही होने के बाद :%s/)।
क्रिस जॉन्सन

बहुत उपयोगी संकेत के रूप में अच्छी तरह से। धन्यवाद @ क्रिस! +1
kars7e

क्या होगा अगर मैं 23 जैसे नंबर के साथ "\ 1" का पालन करना चाहता हूं? मैं इसे "123" के रूप में व्याख्या करने से कैसे बचूं?
Champ

@Champ वापस संदर्भ केवल ऊपर जाना है \9, कोई अस्पष्टता नहीं है।
Kusalananda

4

पिछले रेगेक्स खोजों के साथ-साथ पूर्व आदेशों को देखने और उनमें परिवर्तन करने का एक और अच्छा तरीका इन कमांडों को सामान्य मोड में संपादित करना है। इस मोड से आपके पास कॉपी और पेस्ट सहित आपकी सभी विम शक्तियाँ होंगी।

  • सर्च कर रहे हैं: के बजाय ?या /खोज के लिए, कोशिश q/याq?
  • पूर्व कमांड के लिए, बजाय :प्रयास करेंq:
  • इस मोड के उपयोग से बाहर निकलने के लिए CtrlC

अधिक देखने के लिए पढ़ने के लिए :help q:

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.