2017-06-10 11 views
6

अक्सर जब मैं एक खोज कर रही है और vi में जगह ले रहा हूँ मैं इसे इस तरह करना होगा:खोज करने के दौरान पिछली बार वापस कैसे जाएं vi में पुष्टि करें?

:%s/find/replace/gc 

यह आपको n दबाकर छोड़ें या y दबाकर को बदलने के लिए विकल्प देता है। लेकिन, कभी-कभी मैं n दबाकर गलती से एक बड़ी फ़ाइल में एक से अधिक छोड़ दूंगा जब मैं y दबाता था।

मैं पिछले एक के पीछे कैसे जा सकता हूं और मुझे दूसरा बदलाव देता हूं?

अनिवार्य रूप से, मैं कैसे find (search) अस्थायी रूप से दूसरी दिशा कैसे? धन्यवाद।

+0

'vim' में भी होता है – Sother

+0

ध्यान दें कि' Shift + N' काम नहीं करता है :) – Sother

+1

प्रतिस्थापन पुष्टिकरण मोड में केवल ट्रिगर्स '(वाई, एन, क्यू, एल, ए,^ई,^वाई) 'कुंजी काम। –

उत्तर

2

यह प्रश्न का उत्तर नहीं है, लेकिन एक बहुत अच्छा विकल्प है। मैंने हाल ही में CtrlSF प्लगइन की खोज की है और यह नाटकीय रूप से खोज/प्रतिस्थापन प्रक्रिया में सुधार करता है।

असल में, आपके पास एक बफर में खोज परिणाम हैं और आप इस एकल बफर में सभी प्रतिस्थापन कर सकते हैं।

अपने परिदृश्य के लिए आपको पहले :CtrlSF find करते हैं, सभी फ़ाइलों में सभी मैचों के साथ एक बफर और फिर आप /find करते हैं और n अपने लक्ष्य से अधिक के साथ ले जाएँ और उन्हें बदलने में (बेशक, आप वास्तव में केवल पहले एक को बदल सकते हैं और फिर . के साथ प्रतिस्थापन दोहराएं)।

यदि आप कुछ लक्ष्य याद करते हैं, तो आप पिछले परिणाम पर वापस जाने के लिए N पर क्लिक करें और इसे प्रतिस्थापित करें।

2

मुझे यकीन नहीं है कि क्या आप वर्तमान खोज-प्रतिस्थापन ऑपरेशन को बाधित करना चाहते हैं और फिर से इसे फिर से शुरू करना चाहते हैं। लेकिन यदि स्वीकार्य है, यहां मेरे सुझाव है:

  1. शुरू अपने ढूंढें की जगह जिस तरह से आपका उल्लेख किया: के बाद आप गलती से n दबाकर एक प्रतिस्थापन छोड़ :%s/find/replace/gc
  2. , <ctrl-C>
  3. दबाकर खोज को बाधित
  4. प्रेस <shift-N> अपने find अवधि
  5. रन की पिछली आवृत्ति के लिए वापस जाना थोड़ा अलग तरह से मिल-की जगह है, जबकि आप इस शब्द पर कर रहे हैं: :.,$s/find/replace/gc
  6. किसी भी ऐड-ऑन इंस्टॉल किए बिना आपरेशन

यह सब कार्यक्षमता vim देशी क्षमताओं के साथ काम करता है जारी रखें।

नोट: .,$ रेंज विनिर्देशक लाइनों कि वर्तमान लाइन (. द्वारा इंगित) और जब तक पिछले लाइन ($ द्वारा इंगित) के साथ शुरू की एक सीमा से अधिक :s (substitute) कार्रवाई करने के लिए इंगित करता है।

टिप्पणी 2: यह आप पर जाना जा सकता है, लेकिन किसी और जो इस पोस्ट कुछ इसी तरह के लिए खोज पर ठोकर के लिए दोहराया - % रेंज विनिर्देशक वर्तमान में सक्रिय बफर के सभी लाइनों से अधिक :s (substitute) कार्रवाई करने के लिए इंगित करता है।

संबंधित मुद्दे