2012-01-16 5 views
5

मेरे पास नियमित रूप से कई रेगेक्स प्रतिस्थापन हैं जो मैं नियमित रूप से करता हूं, और इसलिए इसे आसानी से करने के लिए एक कुंजी को मानचित्र बनाना चाहता हूं। हालांकि, यदि प्रतिस्थापन में से एक को प्रतिस्थापित किया जाना है, तो फ़ाइल में नहीं मिला है, मेरी कुंजी मैपिंग E486: Pattern not found के कारण बंद हो जाती है और कोई और प्रतिस्थापन नहीं किया जाता है। जैसे अगर मेरे vimrc में मानचित्रणविम: मैप किए गए प्रतिस्थापन की सूची में त्रुटियों को अनदेखा करना

map <F12> :%s/spam/foo/<enter>:%s/ham/bar/<enter>:%s/eggs/baz/<enter> 

है और वहाँ मेरी फाइल में कोई ham है, eggs प्रतिस्थापित नहीं किया जाएगा। क्या कोई झंडा है जिसे मैं प्रतिस्थापन पर त्रुटियों को अनदेखा कर सकता हूं? मैंने कुछ भी उपयोगी खोजने के बिना :help regex और :help map पढ़ा है।

वैकल्पिक रूप से, क्या ऐसा करने के लिए एक और आसान, अधिक स्पष्ट तरीका है?

+0

(यदि आप 'g' या' e' Birei जैसे झंडे संलग्न नहीं करते हैं तो आप अंतिम '/' बचा सकते हैं: ':% s/spam/foo 'यदि आप दूसरे डिलीमीटर के लिए भी जाते हैं बस कुछ हटाना चाहते हैं (केवल प्रति पंक्ति पहली घटना): '% s/स्पैम ') –

+0

मुझे पता है। मुझे बस अनजान स्लेश होने की इच्छा नहीं है;) – kthy

+0

स्लेश जोड़े द्वारा नहीं जाते :-) – romainl

उत्तर

14

प्रत्येक प्रतिस्थापन आदेश में /e ध्वज जोड़ें। यह त्रुटि संदेशों को नहीं दिखाता है और जारी रहता है जैसे कि कोई त्रुटि नहीं हुई थी।

map <F12> :%s/spam/foo/e<enter>:%s/ham/bar/e<enter>:%s/eggs/baz/e<enter> 
+0

धन्यवाद एक गुच्छा, यह टिन पर क्या कहता है। मुझे नहीं पता कि मैं इसे कैसे चूक गया>। < – kthy

8

आप एक "झंडा" पैटर्न के अंत में जोड़ सकते हैं:: इस नए मैपिंग होगा

:%s/spam/foo/e 

एक त्रुटि थूक नहीं होगा अगर यह spam नहीं मिल रहा है और आप की अनुमति देते हैं जारी रखने के लिए।

:help flags देखें।

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