लाइनों का चयन करें, फिर कमांड मोड दर्ज करने के लिए :
दबाएं। विम स्वचालित रूप से '<,'>
भर जाएगा, जो चयनित लाइनों तक सीमा को प्रतिबंधित करता है। आपके उदाहरण के लिए आप स्वैप करने के लिए :s
आदेश का उपयोग कर सकते हैं:
:'<,'>s/\(\w\+\), \(\w\+\)/\2, \1/
यह दृश्य चयन में प्रत्येक लाइन पर एक अल्पविराम के द्वारा अलग दो शब्दों स्वैप जाएगा।
आप '<
और '>
का उपयोग किसी भी अन्य बुकमार्क या लाइन स्थिति की तरह कर सकते हैं, उदा। एक आंदोलन कमांड के हिस्से के रूप में, इसलिए सामान्य मोड d'<
में मौजूदा कर्सर स्थिति से दृश्य चयन में पहली पंक्ति की शुरुआत में हटा दिया जाएगा। अंक तब भी प्रभावी रहते हैं जब ब्लॉक को दृष्टि से हाइलाइट नहीं किया जाता है।
यदि आप प्रत्येक पंक्ति पर एक रिकॉर्ड किए गए मैक्रो को फिर से चलाने के लिए चाहते हैं तो आपको :normal
कमांड के साथ मैक्रो निष्पादित करने की आवश्यकता है। दुर्भाग्यवश :normal
कमांड लाइनों की एक श्रृंखला पर काम नहीं करता है, लेकिन आप :global
कमांड के साथ इसे ठीक कर सकते हैं। यह हर पंक्ति है कि एक regex से मेल खाता पर एक :ex
आदेश चलाता है, तो आप ऐसा कर सकते हैं:
:'<,'>g/^/ norm @a
स्पष्टीकरण:
:'<,'> for every line in the visual block
g/^/ on every line that matches the regex /^/ - i.e. every line
norm run in normal mode
@a the macro recorded in a
स्रोत
2010-07-26 19:40:06
ईमानदारी से कहूं तो मैं शायद regex के साथ इस विशेष कार्य करना होगा। लेकिन सवाल अभी भी अधिक जटिल मामलों के लिए मान्य है। –
क्यों विम? मेरी राय में sed अधिक अप्रासंगिक है। – kokosing
@kogut: एक पंक्ति regex के साथ अपने पाठ को संपादित करने के लिए अपने संपादक से बाहर क्यों निकलें? – Stephen