/ / केवल टेक्स्ट को हाइलाइट किए गए टेक्स्ट पर प्रतिस्थापन कैसे करें? - विम

विम में केवल हाइलाइट किए गए टेक्स्ट पर प्रतिस्थापन कैसे करें? - विम

प्रतिस्थापन करने से पहले, मैं आमतौर पर टाइप करता हूं / 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

लेकिन क्या कोई बेहतर तरीका है?