आप निश्चित रूप से एक कॉपी / पेस्ट (ब्लॉक-मोड चयन का उपयोग करके) के साथ यह सब कर सकते हैं, लेकिन मैं अनुमान लगा रहा हूं कि आप क्या चाहते हैं।
अगर आप ऐसा सिर्फ Ex कमांड से करना चाहते हैं
:5,8del | let l=split(@") | 1,4s/$/\=remove(l,0)/
बदल जाएगा
work it
make it
do it
makes us
harder
better
faster
stronger
~
में
work it harder
make it better
do it faster
makes us stronger
~
अद्यतन: इस कई उत्तोलकों के साथ एक उत्तर एक अधिक गहन व्याख्या के योग्य है।
विम में, आप |
कई एक्सट्रीम कमांड को चेन कैरेक्टर ( ) का उपयोग कर सकते हैं , इसलिए ऊपर इसके बराबर है
:5,8del
:let l=split(@")
:1,4s/$/\=remove(l,0)/
कई पूर्व कमांड्स उपसर्ग तर्क के रूप में लाइनों की एक सीमा को स्वीकार करते हैं - उपरोक्त मामले 5,8
में del
और निर्दिष्ट करने 1,4
से पहले कि s///
कौन सी लाइनें कमांड संचालित करती हैं।
del
दी गई लाइनों को हटाता है। यह एक रजिस्टर तर्क ले सकता है, लेकिन जब किसी को नहीं दिया जाता है, तो यह पंक्तियों को अनाम रजिस्टर में डंप कर देता है @"
, जैसे सामान्य मोड में डिलीट करता है। let l=split(@")
फिर डिलीट लाइनों को डिफॉल्ट सीमांकक का उपयोग करके एक सूची में विभाजित करता है: व्हॉट्सएप। हटाए गए लाइनों में व्हाट्सएप इनपुट पर ठीक से काम करने के लिए, जैसे:
more than
hour
our
never
ever
after
work is
over
~
हम को रोकने के लिए, एक अलग सीमांकक निर्दिष्ट करने की आवश्यकता होगी दो सूची तत्वों में विभाजित किया जा रहा से "काम है": let l=split(@","\n")
।
अंत में, प्रतिस्थापन में s/$/\=remove(l,0)/
, हम प्रत्येक पंक्ति के अंत ( $
) को अभिव्यक्ति के मान से प्रतिस्थापित करते हैं remove(l,0)
। remove(l,0)
सूची l
को बदल देता है , हटा रहा है और इसके पहले तत्व को वापस कर रहा है। यह हमें हटाए गए लाइनों को उस क्रम में बदलने की अनुमति देता है जिसमें हम उन्हें पढ़ते हैं। हम बदले में हटाए गए लाइनों को रिवर्स ऑर्डर में बदलकर उपयोग कर सकते हैं remove(l,-1)
।
x
में शामिल होने के साथ जुड़नाx+2
चाहते हैं?