এই পোস্ট লিখেছেন সাথিয়ামূর্তি।
এই আর্টিকেল চলমান Vi / Vim Tips and Tricks Series-এর অংশ। একজন লিনাক্স সিস্টেম অ্যাডমিন বা প্রোগ্রামার হিসেবে, আপনি ব্যাশ শেল স্ক্রিপ্ট কোডিং করার সময় নিচের রিপিটেটিভ টাস্কগুলো করতে পারেন:
- ফাইল হেডার যোগ করা
- ফাংশন/ফ্রেম কমেন্ট যোগ করা
- ডিফল্ট কোড স্নিপেট ইনক্লুড করা
- সিনট্যাক্স চেক করা
- একটি ফাংশন সম্পর্কে ডকুমেন্টেশন পড়া
- একটি কোড ব্লকে কমেন্টে কনভার্ট করা, এবং তার বিপরীত
bash-Support Vim প্লাগইন উপরের সব কাজ করার সবচেয়ে সহজ উপায় প্রদান করে, যা আপনার প্রচুর সময় এবং কিস্ট্রোক বাঁচায়।
প্লাগইনটি লেখেছেন ফ্রিট্স মেহনার, যিনি প্লাগইনের উদ্দেশ্য ব্যাখ্যা করেছেন: "Write and run BASH-scripts using menus and hotkeys."
এই আর্টিকেলে প্লাগইনটি ৩টি সহজ ধাপে কীভাবে ইনস্টল করবেন এবং এর ৮টি পাওয়ারফুল ফিচার ব্যাখ্যা করা হয়েছে।
ব্যাশ-সাপোর্ট প্লাগইন ইনস্টল করার ৩ ধাপ
ধাপ ১: ব্যাশ-সাপোর্ট প্লাগইন ডাউনলোড করুন
vim.org ওয়েবসাইট থেকে প্লাগইন ডাউনলোড করুন।
$ cd /usr/src $ wget -O bash-support.zip https://www.vim.org/scripts/download_script.php?src_id=9890
ধাপ ২: ব্যাশ-সাপোর্ট ভিম প্লাগইন ইনস্টল করুন
$ mkdir ~/.vim # যদি ডিরেক্টরি ইতিমধ্যে না থাকে $ cd ~/.vim $ unzip /usr/src/bash-support.zip
ধাপ ৩: ~/.vimrc-এ প্লাগইন ইনেবল করুন
~/.vimrc-এ নিচের লাইনটি যোগ করুন যাতে ভিম এডিটরে প্লাগইনটি ইনেবল হয়।
$ vim ~/.vimrc filetype plugin on
ব্যাশ ভিম প্লাগইনের ৮টি পাওয়ারফুল ফিচার
ফিচার ১: *.sh ফাইলে অটোম্যাটিক হেডার যোগ করা
যখন আপনি .sh এক্সটেনশনوالা ফাইল খুলবেন, তখন নিচের মত হেডারসহ ফাইলটি খুলবে। এটি কার্সরকে Description ফিল্ডে ইনসার্ট মোডে রাখবে।
#!/bin/bash #============================================================ # # FILE: myscript.sh # # USAGE: ./myscript.sh # # DESCRIPTION: # # OPTIONS: --- # REQUIREMENTS: --- # BUGS: --- # NOTES: --- # AUTHOR: (), # COMPANY: # VERSION: 1.0 # CREATED: 02/14/09 15:42:08 IST # REVISION: --- #============================================================
AUTHOR এবং COMPANY-এর ডিফল্ট ভ্যালু পরিবর্তন করতে ~/.vimrc-এ নিচের লাইনগুলো যোগ করুন
let g:BASH_AuthorName = 'SathiyaMoorthy' let g:BASH_Email = 'subscribe@thegeekstuff.com' let g:BASH_Company = 'Open Source Corporation'
এখন, যখন আপনি নতুন একটি ব্যাশ স্ক্রিপ্ট ফাইল তৈরি করবেন, তখন AUTHOR এবং COMPANY-এর মডিফাইড ভ্যালু দেখাবে নিচের মত।
#!/bin/bash #============================================================ # # FILE: myscript.sh # # USAGE: ./myscript.sh # # DESCRIPTION: # # OPTIONS: --- # REQUIREMENTS: --- # BUGS: --- # NOTES: --- # AUTHOR: SathiyaMoorthy (), subscribe@thegeekstuff.com # COMPANY: Open Source Corporation # VERSION: 1.0 # CREATED: 02/14/09 15:39:58 IST # REVISION: --- #============================================================
নোট: হেডারে কাস্টম ফিল্ড যোগ করতে ~/.vim/perl-support/templates/bash-file-header ফাইলটি মডিফাই করুন এবং আপনার কাস্টম ফিল্ড যোগ করুন।
ফিচার ২: \sfu দিয়ে ব্যাশ ফাংশন যোগ করা
সাবরুটিন লিখতে, নরমাল মোডে \sfu টাইপ করুন, যা ফাংশন নেমের জন্য প্রম্পট করবে (নিচের Fig 1-এ দেখানো আছে) এবং ডিফল্ট ফাংশন কনটেন্টসহ সাবরুটিনটি ইনসার্ট করবে (Fig 2-এ দেখানো আছে)।

Fig 1: শেল স্ক্রিপ্টের ভিতরে ব্যাশ ফাংশন যোগ করতে \sfu টাইপ করুন

Fig 2: শেল স্ক্রিপ্টের ভিতরে অটোম্যাটিক্যালি ব্যাশ ফাংশন যোগ হয়েছে
ফিচার ৩: \cfu দিয়ে ফাংশন হেডার ইনসার্ট করা
ফাংশন হেডার ইনসার্ট করতে, নরমাল মোডে \cfu টাইপ করুন, যা Fig 3-এ দেখানো মত কমেন্ট দেখাবে।

Fig 3: শেল স্ক্রিপ্টের ভিতরে ফাংশন হেডার ইনসার্ট করতে \cfu টাইপ করুন
ফিচার ৪: \cfr দিয়ে ফ্রেম কমেন্ট যোগ করা
ফ্রেম কমেন্ট যোগ করতে, নরমাল মোডে \cfr টাইপ করুন, যা Figure 4-এ দেখানো মত ফরম্যাটেড কমেন্ট দেবে।

Fig 4: শেল স্ক্রিপ্টের ভিতরে ফ্রেম কমেন্ট ইনসার্ট করতে \cfr টাইপ করুন
ফিচার ৫: শেল স্ক্রিপ্টের ভিতরে ব্যাশ স্টেটমেন্ট ইনসার্ট করা
স্টেটমেন্ট ইনসার্ট করার শর্টকাট কীগুলো:
- \sc case in … esac
- \sl elif then
- \sf for in do done
- \sfo for ((…)) do done
- \si if then fi
- \sie if then else fi
- \ss select in do done
- \st until do done
- \sw while do done
- \sfu function
- \se echo e "\n"
- \sp printf "\n"
উদাহরণ: শেল স্ক্রিপ্টের ভিতরে কেইস স্টেটমেন্ট অটোম্যাটিক্যালি ইনসার্ট করা
\sc কেইস স্টেটমেন্ট ইনসার্ট করবে এবং কার্সরকে কেইস স্টেটমেন্টের পাশে ইনসার্ট মোডে রাখবে যেমন Figure 5-এ দেখানো আছে। এইভাবে টেবিল ১-এ উল্লেখিত সব শর্টকাট কী ব্যবহার করে উপযুক্ত স্টেটমেন্ট পেতে পারেন।

Fig 5: ব্যাশ শেল স্ক্রিপ্টের ভিতরে কেইস স্টেটমেন্ট ইনসার্ট করতে \sc টাইপ করুন
ফিচার ৬: \nr দিয়ে প্রিডিফাইনড কোড-স্নিপেট ব্যাশ স্ক্রিপ্টে ইনসার্ট করা
কোড স্নিপেট \nr এবং \nw দিয়ে যথাক্রমে পড়া/লিখা যায়। প্লাগইনটির সাথে কিছু প্রিডিফাইনড কোড স্নিপেট থাকে যা আপনি আপনার কোডে ইনসার্ট করতে পারেন। নিচে প্লাগইনটির সাথে আসা ডিফল্ট কোড স্নিপেটগুলো দেওয়া হলো।
$ ls -1 ~/.vim/bash-support/codesnippets/ assert basename+pathname basename-function check-number-of-command-line-arguments create-tempfile create-tempfile-with-trap free-software-comment read-and-split-into-array timestamp usage-and-command-line-arguments.noindent use-file-descriptor-read use-file-descriptor-write well-behaved-script
check-number-of-command-line-arguments কোড স্নিপেট ইনক্লুড করতে, \nr চাপুন এবং ফাইল নেম দিয়ে চেক-নাম্বার-অফ-কমান্ড-লাইন-আর্গুমেন্টস দিন, তাহলে নিচের কোডটি অটোম্যাটিক্যালি শেল-স্ক্রিপ্টে ইনসার্ট হয়ে যাবে।
#----------------------------------------------------------------------- # Check number of command line arguments #----------------------------------------------------------------------- if [ $# -lt 1 ] then echo -e "\n\tUsage: ${0##/*/} File\n" exit 1 fi
নোট: আপনি নিজের কোড স্নিপেট ডিফাইন করে ~/.vim/bash-support/codesnippets/-এ রাখতে পারেন। আপনি বিদ্যমান কোড থেকে নিজের কোড স্নিপেটও বানাতে পারেন - কোডের যে অংশটিকে কোড স্নিপেট বানাতে চান সেটি সিলেক্ট করুন, \nw চাপুন, এবং একটি ফাইল নেম দিন। এরপর থেকে, \nr টাইপ করে ফাইল নেম দিলেই আপনার কাস্টম কোড স্নিপেট পাবেন।
ফিচার ৭: ব্যাশ বিল্ট-ইন কমান্ডের কুইক হেল্প পাওয়া
যখন আপনাকে বিল্ট-ইন কমান্ডের হেল্প পেজ পড়তে হবে, তখন কার্সর ওয়ার্ডের ওপর থাকা অবস্থায় \hh চাপুন।
নিচের উদাহরণে (Fig 6), read বিল্ট-ইন কমান্ডটি সিলেক্ট করা আছে এবং \hh টাইপ করা হয়েছে, যা read কমান্ড সম্পর্কে কুইক-হেল্প দেখিয়েছে। একই পদ্ধতিতে সব ব্যাশ বিল্ট-ইন কমান্ডের কুইক-হেল্প পাওয়া যায়।

Fig 6: সিলেক্ট করা ব্যাশ বিল্ট-ইন কমান্ডের হেল্প পেতে \hh টাইপ করুন
ফিচার ৮: ফিচার্ড কমেন্টিং
নিচের কমান্ডগুলো відпов 對應 কিওয়ার্ড কমেন্ট যোগ করবে। উদাহরণস্বরূপ, শেল-স্ক্রিপ্টের ভিতরে BUG কমেন্ট লাইন যোগ করতে \ckb টাইপ করুন।
- \ckb Keyword BUG
- \ckt Keyword TODO
- \ckr Keyword Tricky
- \ckw Keyword WARNING
\ckt টাইপ করলে "# :TODO: mm/dd/yy:: " কিওয়ার্ডসহ একটি কমেন্ট লাইন যোগ হবে। এটি মূলত একটি কমেন্ট লাইন যা TODO হিসেবে কাজ করে, যেখানে আপনি بعدে করার کارগুলো লিখতে পারেন।

Fig 7: ব্যাশ শেল স্ক্রিপ্টের ভিতরে TODO যোগ করতে \ckt টাইপ করুন
bash-support প্লাগইনে আরও অনেক পাওয়ারফুল ফিচার আছে। আরও ইনফরমেশনের জন্য ডকুমেন্টেশন পড়ুন। ডকুমেন্টেশন আপনার সিস্টেমের নিচের লোকেশনগুলোতে আছে।
- README : ~/.vim/README.bashsupport
- PDF : ~/.vim/bash-support/doc/bash-hot-keys.pdf
- অনলাইন bash-support vim প্লাগইন ডকুমেন্টেশন
- এই প্লাগইন একটি হেল্প ফাইল (bashsupport.txt) দিয়ে আসে যেটি :h bashsupport দিয়ে দেখা যাবে
- [ :helptags ~/.vim/doc দিয়ে হেল্প ট্যাগ জেনারেট করুন, তারপর :h bashsupport ইস্যু করুন ]
- এই প্লাগইনটির অ্যাডিশনাল স্ক্রিনশট।
পরামর্শিত পড়াশোনা
Vim 101 Hacks, by Ramesh Natarajan। আমি একটি কমান্ড-লাইন জンキ। তাই স্বাভাবিকভাবেই আমি Vi এবং Vim এডিটরের বড় ফ্যান। কয়েক বছর আগে, যখন আমি লিনাক্সে প্রচুর সি কোড লিখতাম, তখন সব উপলব্ধ Vim এডিটর টিপস অ্যান্ড ট্রিক্স পড়তাম। আমার Vim এডিটর অভিজ্ঞতার ভিত্তিতে, আমি Vim 101 Hacks ইবুক লিখেছি যাতে ১০১টি প্র্যাক্টিক্যাল উদাহরণ আছে ভিমের বিভিন্ন অ্যাডভান্সড ফিচার সম্পর্কে যা আপনাকে ভিম এডিটরে দ্রুত ও প্রোডাক্টিভ করে তুলবে। আপনি যদি অনেক বছর ধরে Vi এবং Vim ব্যবহার করছেন কিন্তু এই বইটি পড়েননি, তো নিজের উপকারে পড়ুন। আপনি Vim এডিটরের ক্ষমতা দেখে চকিত হবেন।