একটি প্লাগইন তৈরি করা বা এটি উইমস্ক্রিপ্টে কোডিং করা কিছুটা ভারী মনে হচ্ছে। আমি একটি প্লাগইন-মুক্ত ভিএম, এবং বাহ্যিক সরঞ্জামগুলির সাথে ভাল রচনাতে বিশ্বাস করি।
এখানে ব্যবহারকারীর উপর ভিত্তি করে একটি 1-বারের কমান্ড রয়েছে 2571881 এর, এটি কাজ করে এমনকি যদি বাফারটি সংরক্ষণ না করা হয়।
:%!awk -F '|' '{print; sum+=$4}; END {print "Total: "sum}'
আপনি যদি ভবিষ্যতে ব্যবহারের জন্য এই আদেশটি সংরক্ষণ করতে চান তবে আপনি এটির নাম রাখতে পারেন:
:command! -range=% -nargs=1 SumColumn <line1>,<line2>!awk -F '|' '{print; sum+=$('<args>' + 1)} END {print "Total: "sum}'
এটি ভিজ্যুয়াল নির্বাচনের সাথে কাজ করে। যদি আপনি কয়েকটি সারি নির্বাচন করেন এবং কমান্ড মোডে যান, ভিম আপনার কমান্ডের সাথে উপসর্গ করবে :'<,'>
, যা ভিজ্যুয়াল নির্বাচনের জন্য লাইন রেঞ্জ। সুতরাং আপনি চালাতে পারেন:
:'<,'>SumColumn 3
এবং এটি কেবল নির্বাচিত সারিগুলির তৃতীয় কলামের যোগফল করবে। ডিফল্টরূপে পরিসীমা হয় %
, তাই
:SumColumn 3
সমস্ত লাইনের তৃতীয় কলামের যোগফল করবে।
সম্পাদনা: আপনি যদি অন্য ক্ষেত্রের বিভাজক নির্দিষ্ট করতে এবং শেষের হিসাবে গণনা করা কলামটি ডিফল্ট করতে চান, আপনি কমান্ডটি কভার করতে পারেন bash
এবং এর সাথে যুক্তিগুলি হ্যান্ডেল করতে পারেন:
:command! -range=% -nargs=* SumColumn <line1>,<line2>!bash -c 'awk -F ${2:-|} "{print; sum+=\$(${1:-NF - 2} + 1)} END {print \"Total: \"sum}"' sumcolumn <args>
এখন,
:SumColumn
"|" দিয়ে একটি সারণির শেষ কলামটি গণনা করবে ক্ষেত্র বিভাজক,
:SumColumn 3
"|" সহ একটি সারণীর তৃতীয় কলাম গণনা করবে ক্ষেত্র বিভাজক, এবং
:SumColumn 3 +
ফিল্ড বিভাজক সহ একটি সারণীর তৃতীয় কলাম গণনা করবে।