2012-11-16 13 views
12

मुझे समझ में आता है कि आप एक vim खोज/प्रतिस्थापन ऑपरेशन में फ़ंक्शन को कॉल कर सकते हैं। उदाहरण के लिए:vim - 'प्रतिस्थापन' अभिव्यक्ति के अंदर कॉल फ़ंक्शन

%s/regex/\=localtime()/g 

वर्तमान युग समय के साथ 'रेगेक्स' से मेल खाने वाली किसी भी चीज़ को प्रतिस्थापित करेगा। समस्या यह है कि, मैं 'प्रतिस्थापन' अभिव्यक्ति में कुछ और नहीं जोड़ सकता। उदाहरण के लिए:

%s/regex/epoch: \=localtime()/g 

अब 'लोकलटाइम' को फ़ंक्शन के रूप में नहीं मानता है। इसके बजाय यह प्रतिस्थापन पाठ में एक स्ट्रिंग के रूप में 'epoch: = localtime()' प्रिंट करता है। इसका इरादा इसके बजाय 'युग: 1353085 9 4 4' प्रिंट करना है।

क्या प्रतिस्थापन अभिव्यक्ति के मनमाना खंड में से किसी फ़ंक्शन को कॉल करने का कोई तरीका है?

उत्तर

14

एक बार जब आप प्रतिस्थापन-अभिव्यक्ति का उपयोग करते हैं, तो यह संपूर्ण प्रतिस्थापन होना चाहिए। आप (और submatch(1) बजाय \1 के माध्यम से कब्जा कर लिया तत्वों को देखें) इस तरह से अपनी अभिव्यक्ति में स्ट्रिंग संयोजन का उपयोग कर सकते:

:%s/regex/\='epoch: ' . localtime()/g 
+0

बिल्कुल सही जवाब! संक्षिप्त, सरल, और सटीक। धन्यवाद! – pedorro

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