আমি এই জাতীয় কাজগুলি সম্পাদন করতে vim গ্লোবাল কমান্ডটি ব্যবহার করতে চাই। এটি কোনও রেখার শুরুতে পুনরাবৃত্তি যুক্ত করতে বা পাঠ্যে একটি প্রতীক পরিবর্তন করতে প্রযোজ্য। এটি অন্যান্য সমাধানগুলির চেয়ে আরও জটিল দেখায়, তবে আপনি যখন এটি ব্যবহার করেন তখন ব্যবহার করার জন্য এটি বেশ নমনীয় প্যাটার্ন এবং অনেক চিন্তাভাবনা ছাড়াই পরিবর্তন করা সহজ।
প্রথমে আপনার ব্যাপ্তিটি বেছে নিন (কোন লাইনগুলি আপনি এটি প্রয়োগ করতে চান)। আমি সাধারণত চিহ্ন ব্যবহার করি (উদাহরণস্বরূপ ma
প্রথম লাইনে এবং mb
দ্বিতীয়টিতে, তবে আপনি লাইন নম্বর বা ভিজ্যুয়াল নির্বাচনও ব্যবহার করতে পারেন), তারপরে নিম্নলিখিত কমান্ডটির একটি পরিবর্তন লিখুন (বর্তমানে আপনার ব্যবহারের ক্ষেত্রে টুইঙ্ক করা হয়েছে)
:let i=1|'a,'bg/^/s/^/\=i.". "/|let i=i+1
বিনির্মাণ
:let i=1
এটি i
একটি প্রারম্ভিক মান সহ ভেরিয়েবল সেট আপ করে । সাধারণত তালিকাগুলি 1 দিয়ে শুরু হয়, তাই আমি 1 এ সেট করছি।
|
বারটি একটি নতুন কমান্ড শুরু করে
'a,'b
এটি পরবর্তী কমান্ডের ব্যাপ্তি নির্ধারণ করে। আমি চিহ্ন থেকে যাচ্ছি a
চিহ্ন b
, যা প্রথম লাইন এবং আপনার তালিকার শেষ লাইনটি সেট করা যাবে।
g/^/
এটি বিশ্বব্যাপী আদেশ। এটি প্রদত্ত নিয়মিত অভিব্যক্তির জন্য ফাইলটি (বা পরিসীমা) অনুসন্ধান করে এবং মিলিত প্রতিটি লাইনে কমান্ডের বাকী অংশটি কার্যকর করে । আমি "লাইনের শুরু" অনুসন্ধান করে প্রতিটি লাইনের সাথে মিল করছি। আপনি যদি পাঠ্য মত
Item some txt
other text
Item second item
whatever
Item third
এবং কেবলমাত্র এই লেবেলগুলির সামনে রাখতে Item
এবং অন্যান্য লাইনগুলিকে অগ্রাহ্য করতে g/Item/
বা করতে বা g/^Item/
তার পরিবর্তে (আক্ষরিক আইটেমের পাঠ্যটি ধরে নেওয়া) চাই
s/^/\=i.". "/
এটি রেখাটির প্রারম্ভকে i
a দিয়ে কঙ্কেনেটেড মানের সাথে প্রতিস্থাপন করতে নিয়মিত অভিব্যক্তি কার্যকর করে .
। সাধারণত আপনি যে কোনও কিছুতে এটি করতে পারেন ( Item
উদাহরণ হিসাবে উদাহরণ সহ লেবেলটি প্রতিস্থাপন করুন )।
|let i=i+1
যদিও বারটি একটি নতুন কমান্ড শুরু করে, এটি বিশ্বব্যাপী সম্পূর্ণ হওয়ার পরে পরিবর্তে গ্লোবাল কমান্ডের মধ্যে চালানোর জন্য একটি দ্বিতীয় কমান্ড সেট করে। i
পরবর্তী লাইনটি জি দ্বারা প্রক্রিয়া করার আগে ফলাফলটি আমরা বর্ধিত করি । এখানে নমনীয়তার আরেকটি জায়গা। আমি পরিবর্তনটি যে কোনও কিছু হতে পারে (2 দ্বারা বৃদ্ধি, একটি ফাংশন কল করুন যা ফিবোনাকী ক্রমের পরবর্তী উপাদান তৈরি করে, যাই হোক না কেন)।
awk
সম্ভবত এই কাজের জন্য হাতিয়ার। তবে আমি উইন্ডোজ (দীর্ঘশ্বাস) এ আছি।