2012-09-18 12 views
17

में प्रत्येक पंक्ति मैं इन पंक्तियों के साथ एक फ़ाइल है:डुप्लिकेट छठी

aa 
bb 
cc 
dd 

मैं में इस परिवर्तित करना चाहते हैं:

aa 
aa 
bb 
bb 
cc 
cc 
dd 
dd 

VI में यह संभव है?

+0

शायद यहां आने वाले लोगों के लिए ब्याज की रुचि: http://stackoverflow.com/q/29368158/812102 –

+0

परमाणु दोस्त का उपयोग करें !! :)। आप इसे सीएमडी + शिफ्ट + डी (या Ctrl + Shift + D) –

उत्तर

32

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

:g/^/norm yyp 

फिर भी एक और एक (कम):

:%s/.*/&\r& 

एक और एक:

:%!sed p 
+0

धन्यवाद के साथ कर सकते हैं। इसने काम कर दिया। – arunmoezhi

+0

एस विकल्प के लिए धन्यवाद, क्योंकि मैं इसे दृश्य चयन के लिए ऐसा करने के लिए देख रहा था और यह मेरे लिए काम करता था। – mmarchin

9

उपयोग वैश्विक आदेशg पर संचालित करने के लिए फ़ाइल में प्रत्येक पंक्ति:

:g/^/norm yyp 

g कमांड एक पैटर्न से मेल खाने वाली सभी लाइनों पर काम करेगा। ^ एक पैटर्न है जो किसी भी लाइन से मेल खाता है। norm आदेश yyp निष्पादित करता है, जो वर्तमान रेखा को yanks करता है, और इसे चिपकाता है। :g/^/norm Yp भी काम करेगा।

कमांड के बारे में अधिक जानकारी के लिए :help global देखें और g पर यह vim wiki पृष्ठ भी देखें।

+1

स्पष्टीकरण के लिए धन्यवाद – arunmoezhi

+0

या सिर्फ ':% मानक वाईपी' – Conner

+2

@ कॉनर: यह काम नहीं करता है, क्योंकि% मूल सीमा पर पुनरावृत्त होता है, लेकिन कमांड लाइन जोड़ता है। आपको यहां 'ग्लोबल' का तर्क "पहले चिह्नित करें, फिर पुनरावृत्त करें" तर्क की आवश्यकता है। –

31

मैं g/^/t.
g (global के लिए) आदेश की तरह किसी भी लाइनों है कि एक पैटर्न से मेल के लिए दिखेगा।
हमारे द्वारा निर्दिष्ट पैटर्न ^ है, जो सभी लाइनों से मेल खाता है।
t कॉपी और पेस्ट करेगा, और अंत में
dot इसे नीचे पेस्ट करने के लिए कहता है।

क्या मैं ब्रेवटी के लिए जीतता हूं?

+0

+1 बहुत सारे तरीके। मुझे लगता है कि यह सबसे छोटा है। – kev

+0

उत्तर के लिए धन्यवाद। मैंने इसे – arunmoezhi

+1

ऊपर उठाया है जो मैं आमतौर पर – sehe

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