2010-12-06 7 views
6

मैं एक खोज या खोज के लिए उपयोग की गई अंतिम स्ट्रिंग को वापस कैसे ला सकता हूं & प्रतिस्थापित?अंतिम खोज या खोज और स्ट्रिंग को वापस vim में बदलें?

उदाहरण के लिए, मान लें कि मैं :%s/some_text/some_other_text/gc दर्ज करता हूं और vim मुझे E486: Patterns not found: some_text त्रुटि संदेश वापस देता है। मुझे तब एहसास हुआ कि मैं वास्तव में some_text के बजाय some_magic_text लिखना चाहता था। उस बिंदु पर, मैं नीचे की कमांड पंक्ति (या जिसे भी कहा जाता है) में अपनी मूल स्ट्रिंग को वापस कैसे प्राप्त कर सकता हूं, इसलिए मैं इसे बदल सकता हूं और दूसरी खोज कर सकता हूं? क्या इसके लिए निफ्टी कम कमांड है?

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

और यदि मैकविम का उपयोग कर रहा हूं तो इससे कोई फर्क पड़ता है।

उत्तर

3

यह vimvcast देखें जो आप चाहते हैं कि बताते हैं।

+2

Ctrl-p, वह वही था। बहुत धन्यवाद। – c00kiemonster

+3

आप केवल '/' रजिस्टर का उपयोग कर सकते हैं। उदाहरण: ':% s/ /' और फिर वहां से जाएं। – rossipedia

0

अधिक आम तौर पर, आप पहले कुछ अक्षर दर्ज करके पहले टाइप किए गए किसी भी कमांड को याद कर सकते हैं, और फिर इतिहास में नेविगेट करने के लिए कई बार तीर का उपयोग कर सकते हैं।

आपके मामले में, आप टाइप कर सकते हैं:
:%s<Up>

:help history

6

देखें सामान्य मोड से, आपके खोज इतिहास माध्यम से नेविगेट करने q/ मारा!

1

यह उत्तर आपके बाद के बाद में सुधार में अच्छा हो सकता है।

हाइलाइटिंग के साथ खोज का उपयोग करें, यह जांचने के लिए कि क्या रेगेक्स आप क्राफ्टिंग कर रहे हैं, निश्चित रूप से काम कर रहा है, और उसके बाद इसे खोज-प्रतिस्थापन में उपयोग करें।

  1. :se is (incsearch, बेहतर अपने .vimrc में se is डाल)
  2. /<search term>
  3. साथ n/N जाँच अगर आप मैचों
  4. :s%//<replace term>/g

जब छोड़ते हुए से खुश हैं <search term>4. में खोज-प्रतिस्थापन में, एल उपयोग की जाने वाली खोज का उपयोग किया जाएगा।

अंतिम (खोज-प्रतिस्थापन) आदेशों की सूची का आकलन करने के लिए q: का उपयोग करें, या जैसा कि पहले से ही q/ को अंतिम खोज शब्दों की सूची के लिए उपयोग किया गया है।

बोनस:
जब :se gd, s/<search>/<replace> का उपयोग कर s/<search>/<replace>/g के रूप में व्यवहार करेगा।

प्रत्येक पंक्ति में केवल पहले खोज मैच तक पहुंचने के बाद भी /g जोड़ने के साथ किया जा सकता है, इसलिए अनिवार्य रूप से दोनों व्यवहार केवल स्विच किए जाते हैं।

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