আপনি অবশ্যই একটি একক অনুলিপি / পেস্ট (ব্লক-মোড নির্বাচন ব্যবহার করে) দিয়ে এটি করতে পারেন, তবে আমি অনুমান করছি যে এটি আপনি চান না।
আপনি যদি এটি করতে চান তবে প্রাক্তন কমান্ডগুলি
: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)/
অনেক Ex কমান্ড একটি উপসর্গ আর্গুমেন্ট হিসাবে লাইনের একটি সীমার গ্রহণ করা - এসব উপরে ক্ষেত্রে 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
?