2013-02-18 14 views
5

की जगह मैं इस तरह एक चर परिभाषित किया है:vim खोज के अंदर एक चर की सामग्री का उपयोग करने और vimscript में अभिव्यक्ति

let b:myvar = 'abc' 

अब मैं कैसे एक खोज & में है कि वर की सामग्री सम्मिलित कर सकते हैं की जगह, जैसे:

:s/123/&myvar/ 
+0

आप केवल बदलने के हिस्से में एक चर के लिए पूछ रहे हैं? या किसी भी चर के लिए खोज या भाग को प्रतिस्थापित करने के लिए? – hippietrail

उत्तर

3

इस लाइन का प्रयास करें:

:s/123/\=b:myvar/ 
9

केंट के जवाब टी के लिए अच्छी तरह से काम वह प्रतिस्थापन हिस्सा; सामान्य प्रविष्टि के लिए जब स्थानापन्न आदेश सहभागी टाइपिंग, आप <C-R><C-R>= के माध्यम से किसी भी अभिव्यक्ति (न केवल चर, भी कार्य आदि) सम्मिलित कर सकते हैं (इन टाइप किया जाना चाहिए के रूप में Ctrl +आर, सचमुच नहीं):

:substitute/<C-R><C-R>=b:myvar<CR>/replacement/<CR> 

एक स्क्रिप्ट के अंदर, आप :execute का उपयोग करेंगे:

:execute 'substitute/' . b:myvar . '/replacement/' 
+0

यह काम नहीं करता है यदि 'b: myvar' के स्थान पर उपयोग किया गया चर बदल जाएगा, जो मैं बता सकता हूं, उदाहरण के लिए यदि यह लूप वैरिएबल है। – hippietrail

+1

@hippietrail: लूप को लाइन के चारों ओर होना होगा, इसलिए यह काम करता है। एकमात्र सीमा अलग-अलग प्रतिस्थापन के लिए है, लेकिन फिर आपको एक अभिव्यक्ति का उपयोग करना होगा, एक साधारण चर नहीं, और केंट के उत्तर का पालन करना होगा। –

+0

ठीक है मैं विम के इस पहलू के लिए बहुत नया हूं और एक वास्तविक लूप के अंदर एक छद्म लूप (वृद्धिशील चर के साथ वैश्विक) था। लेकिन मुझे यह काम करने के लिए मिला। उत्तर के लिए धन्यवाद। – hippietrail

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