प्रतिस्थापन करने से पहले, मैं आमतौर पर टाइप करता हूं / foo पहले पैटर्न को खोजने के लिए।
विम स्वचालित रूप से सभी तारों को हाइलाइट करते हैं पैटर्न से मेल खाते हैं।
फिर मैं पता लगाता हूं कि प्रतिस्थापन कमांड कैसे लिखनी है :%s/foo/bar/g
.
जब पैटर्न जटिल होता है, तो खोज कमांड की तुलना में प्रतिस्थापन कमांड लिखना बहुत कठिन होता है।
अगर मैं केवल हाइलाइट किए गए तारों पर प्रतिस्थापन कर सकता हूं। यह आसान हो जाता है।
उदाहरण के लिए:
सवाल: एक लाइन का हिस्सा अनुवाद
मैं खोज पैटर्न का पता लगा सकता हूं: /[[(http)@!.{-}]]
लेकिन मैं आसानी से प्रतिस्थापन कमांड का पता नहीं लगा सकता।
उत्तर:
उत्तर № 1 के लिए 6आप पहले से खोजे गए पैटर्न को बदल सकते हैं यदि आप स्थानापन्न कमांड में खोज पैटर्न के रूप में एक खाली स्ट्रिंग का उपयोग करते हैं:
बाद /foo
प्रकार :%s//bar/g
"बार" द्वारा "फू" को बदलने के लिए सामान्य मोड में।
जवाब के लिए 0 № 2
प्रतिस्थापित करने से पहले पुष्टि करने के लिए विम को बताने के लिए आप "c" ध्वज का उपयोग कर सकते हैं। यह दिए गए पैटर्न के अनुसार हर मैच से पहले हाइलाइट करना और पूछना बंद कर देता है।
:%s/foo/bar/gc
जवाब के लिए 0 № 3
मुझे अभी पता चला है:
:%s@@=substitute(submatch(0), "_", "/", "")@g
लेकिन क्या कोई बेहतर तरीका है?