ভিম : কাস্টমাইজেশন

আগের দুই পর্বে (১ম, ২য়) ভিমের সঙ্গে প্রাথমিক কিছু পরিচয় হয়েছে। এই পর্বে দরকারি কিছু বিষয়—যেগুলো সাধারণত একবারই কনফিগার করে নেওয়ার প্রয়োজন হবে—সেগুলো নিয়ে কিছুটা লিখেছি।

এই পর্বের সবচেয়ে দরকারি জিনিস হচ্ছে .vimrc ফাইল। ভিম ওপেন হওয়ার সময় এই ফাইলটি পড়ে বিভিন্ন কনফিগারেশন ঠিক করে নেয়। স্থায়ীভাবে কোনোকিছু সেট করতে আমাদের এই ফাইলে কনফিগারেশনগুলো লিখতে হবে। লিনাক্সে /etc/vim/vimrc বা /etc/vimrc ফাইলেও কনফিগারেশন থাকতে পারে। তবে সেগুলোতে হাত না দেওয়াই ভালো, যদি না আপনি জানেন যে আপনি ঠিক কী করছেন।

টার্মিনাল ওপেন করে নিচের কমান্ডটি এক্সিকিউট করুন –

$ vim ~/.vimrc

এতে .vimrc ফাইলটি খুলবে।

ধরে নিচ্ছি এই লেখা যারা পড়ছেন, তারা সবাই প্রোগ্রামার। তাই প্রোগ্রামিংসংক্রান্ত কিছু কাজ দিয়েই শুরু করা যাক। প্রথমেই আমাদের দরকার লাইন নম্বর। .vimrc ফাইলে লিখে ফেলুন –

set number

এবার ফাইলটি সেভ করে ভিম বন্ধ করুন। আবার ওপেন করুন। এখন লাইন নম্বর দেখা যাচ্ছে। কোডের সিনট্যাক্স হাইলাইটিংয়ের জন্য লিখুন –

syntax on

অটো ইনডেন্টেশনের জন্য লিখুন –

filetype plugin indent on

ভিমে ট্যাব ক্যারেক্টারের দৈর্ঘ ডিফল্টভাবে ৮ স্পেস, যা অনেকেরই পছন্দ না। আবার ট্যাব ক্যারেক্টারের বদলে স্পেস ব্যবহার করা একটি ভালো অভ্যাস। সুতরাং নিচের লাইনগুলোও লিখে ফেলুন –

set tabstop=4
set shiftwidth=4
set expandtab

এবার ফাইলটি সেভ করে নিন। প্রোগ্রামিংয়ের জন্য ভিম তৈরি হয়ে গেল।

কম্পিটিটিভ প্রোগ্রামিং যারা করে, তারা প্রায়ই দ্রুত কোড লেখার জন্য টেমপ্লেট তৈরি করে রাখে। ভিমেও এ রকম টেমপ্লেট ব্যবহার করা যায়। ধরে নিলাম আপনার সি প্লাস প্লাসের একটি টেমপ্লেট লাগবে। নিচের মতো একটি ফাইল তৈরি করুন –

#include <bits/stdc++.h>

using namespace std;

// Other macros and functions

int main()
{

    return 0;
}

ফাইলটি skel.cpp নাম দিয়ে সেভ করে ~/.vim/templates/ ডিরেক্টরিতে নিয়ে রাখুন –

$ mkdir -p ~/.vim/templates/
$ mv skel.cpp ~/.vim/templates/

এবার .vimrc ফাইলটি ওপেন করে নিচের লাইনটি যোগ করুন –

autocmd BufNewFile *.cpp 0r ~/.vim/templates/skel.cpp

ফাইলটি সেভ করে নিন। এখন থেকে .cpp এক্সটেনশনের যেকোনো নতুন ফাইল তৈরি করলে এতে টেমপ্লেট ফাইলের কোডটুকু যুক্ত হয়ে যাবে। আবার আপনি যদি চান যে ফাইল তৈরির পর কার্সর কোনো নির্দিষ্ট লাইনে থাকুক (যেমন : মেইন ফাংশনের শুরুতে), তাহলে নিচের লাইনটি .vimrc-তে যোগ করতে পারেন।

autocmd BufWinEnter *.cpp call cursor(8, 1)

এতে কার্সরটি ৮নং লাইনের শুরুতে থাকবে। আপনি আপনার টেমপ্লেট অনুযায়ী এখানে লাইন নম্বর ঠিক করে দিন। এতে নতুন ফাইল তৈরির পর নেভিগেট করে মেইন ফাংশনে যেতে হবে না, কার্সর আগে থেকেই সেখানে থাকবে। আপনি কেবল i চেপে কোড করা শুরু করবেন।

[ছোট্ট দুটি তথ্য এখানে দেওয়া দরকার বলে মনে করি। ভিমে কমান্ড মোডে o (ছোট হাতের O) চাপলে কার্সর যে লাইনে অবস্থিত, তার নিচে একটি নতুন লাইন ইনসার্ট হয়। আবার ইনসার্ট মোডে যাওয়ার জন্য i না চেপে a চাপা সুবিধাজনক।]

ভিমের ডিফল্ট কালারস্কিম পরিবর্তন করতে চাইলে কমান্ড মোডে গিয়ে লিখুন :colo, তারপর একটি স্পেস দিন, তারপর Ctrl + d চাপুন। কালারস্কিমের একটি তালিকা দেখা যাবে, নিচের ছবির মতো –

এখন পছন্দমতো একটি কালারস্কিমের নাম লিখে এন্টার চাপুন। যেমন : blue কালারস্কিম সেট করতে চাইলে লিখতে হবে :colo blue। এখানে colorscheme-কে সংক্ষেপে colo লেখা হয়েছে। পুরোটা লিখলেও হবে। কালারস্কিম স্থায়ীভাবে সেট করতে চাইলে .vimrc ফাইলের শেষে নিচের লাইনটি যোগ করতে হবে –

colorscheme blue

এখানে যদিও মাত্র কয়েকটি কালারস্কিম রয়েছে, ইন্টারনেট থেকে আরো অনেক কালারস্কিম ডাউনলোড করে নেওয়া যায়। কালারস্কিম ফাইল ~/.vim/colors ফোল্ডারে রেখে .vimrc ফাইলে ওপরের মতো করে colorscheme <name> লিখে দিলেই হলো। কালারস্কিম প্লাগইন হিসেবেও ডাউনলোড করা যায়।

ভিমের কার্যক্ষমতা বৃদ্ধি করতে শত শত প্লাগইন গিটহাবে রয়েছে। কিন্তু এগুলো নিজে নিজে ডাউনলোড করে ম্যানেজ করা কঠিন। সেজন্য একটি প্লাগইন ম্যানেজার ব্যবহার করা ভালো। ভিমের অনেকগুলো প্লাগইন ম্যানেজার রয়েছে। আমি এখানে Vundle (Vim bundle) ইনস্টল করা এবং এটি দিয়ে প্লাগইন ইনস্টল করার পদ্ধতি দেখাচ্ছি।

Vundle ইনস্টল করতে চলে যেতে পারেন এর গিটহাব পেজে। বুঝতে অসুবিধা হলে নিচের ধাপগুলো অনুসরণ করুন :

টার্মিনাল খুলে নিচের কমান্ডটি এক লাইনে লিখে (বা কপি করে) রান করুন –

$ git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim

এবার .vimrc ফাইল খুলে ফাইলের একেবারে শুরুতে নিচের লাইনগুলো যোগ করুন –

set nocompatible
filetype off
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
Plugin 'VundleVim/Vundle.vim'

call vundle#end()

লাইনগুলো অবশ্যই ফাইলের শুরুতে যোগ করতে হবে। ফাইলটি সেভ করে নতুন করে ভিমে প্রবেশ করুন। কমান্ড মোডে লিখুন :PluginInstall। দেখবেন নিচে Done লেখা এসেছে। তার মানে প্লাগইন ম্যানেজার সফলভাবে ইনস্টল হয়েছে। :qa লিখে ভিম থেকে বের হয়ে আসুন।

আপনি এখন চলে যেতে পারেন https://vimawesome.com/ সাইটে। এখানে প্রচুর প্লাগইন রয়েছে। মজার ব্যাপার হচ্ছে, সাইটটিতে ভিমের শর্টকাট ব্যবহার করে নেভিগেট করা যায়। যাহোক, আমি এখন gruvbox নামের একটি প্লাগইন ইনস্টল করে দেখাব। এটি মূলত একটি কালারস্কিম। একই পদ্ধতি অনুসরণ করে আপনি পরে যেকোনো প্লাগইন ইনস্টল করতে পারবেন।

.vimrc ফাইল ওপেন করে Plugin ‘VundleVim/Vundle.vim’ লাইনের পরে নিচের লাইনটি যোগ করুন (স্ক্রিনশট দেখুন) –

Plugin 'morhetz/gruvbox'

লাইনটি অবশ্যই call vundle#end() লাইনের আগে হবে। এরপর ফাইলের একদম শেষে নিচের লাইনটি যোগ করুন –

colorscheme gruvbox

এখন আবার ভিমে প্রবেশ করে :PluginInstall কমান্ড চালান। কিছুক্ষণের মধ্যে প্লাগইনটি ইনস্টল হয়ে Done লেখা আসবে। ভিম থেকে বের হয়ে যান। .vimrc ফাইলটি ভিম দিয়ে ওপেন করলে নতুন কালারস্কিমটি দেখতে পাবেন।

Vundle বিষয়ে বিস্তারিত জানতে এবং এর ব্যবহার শিখতে অবশ্যই এর গিটহাব পেজ থেকে রিডমি ফাইলটি পড়ে নেবেন। যেকোনো প্লাগইন ইনস্টলের জন্য প্লাগইনের গিটহাব পেজে চলে যেতে হবে, এবং ঠিকানা থেকে github.com/ অংশটি বাদ দিয়ে বাকি অংশ ওপরের পদ্ধতিতে .vimrc ফাইলে বসিয়ে দিতে হবে। বাকি কাজ Vundle করবে। যেমন : gruvbox-এর গিটহাব ঠিকানা হচ্ছে github.com/morhetz/gruvbox, আমরা তাই morhetz/gruvbox লিখেছি।

মোটামুটি এই ছিল আলোচনার বিষয়বস্তু। এখানে ভিমের অতি অল্প বিষয় নিয়েই আলোচনা করা হয়েছে। ভিমের যেকোনো সমস্যায় সাহায্য পাওয়া যাবে :help কমান্ড থেকে। যেমন : :help window লিখলে window সম্পর্কে সাহায্য দেখা যাবে, :help quit লিখে quit সম্পর্কে সাহায্য পাওয়া যাবে। টার্মিনালে vimtutor কমান্ড লিখলে ভিম ব্যবহারের প্রয়োজনীয় তথ্যসমৃদ্ধ একটি ম্যানুয়েল পাওয়া যায়। পুরোটা পড়তে মোটামুটি ঘণ্টাখানেক লাগে। পড়ার সময় অবশ্যই সাথে সাথে অনুশীলন করতে হবে। এছাড়া ইন্টারনেট তো আছেই সাহায্যের জন্য।

প্রোগ্রামিং করার জন্য পরিপূর্ণভাবে ভিমের ওপর নির্ভরশীল হতে হলে আরো কিছু জিনিসের প্রয়োজন হবে, যেমন: কোড কমপ্লিশন ইত্যাদি। আর এ সবকিছুর জন্য ভিমের প্লাগইন রয়েছে। আশা করছি আগ্রহী পাঠক সেগুলো নিজে নিজেই ইনস্টল করে নিতে পারবেন। ফাইল ব্রাউজিংও একটু আয়ত্ব করে নিতে পারেন। আর কেবল এটুকুই আপনাকে দিতে পারে ভিমের অসাধারণ এক জগতের সন্ধান।

Solarized কালারস্কিম ও YouCompleteMe প্লাগইন ও JetBrains Mono ফন্টের সমন্বয়ে আমার বর্তমান ভিম।

—মোশারফ হোসেন

ভিম : সাধারণ লেখালেখি

প্রথম পর্বে আমাদের ভিমের সঙ্গে মোটামুটি পরিচয় হয়েছে। এই পর্বে বেশ কিছু বিষয় থাকবে, যা সাধারণ টেক্সট এডিটিং কিংবা প্রোগ্রামিংয়ের সময় কাজে লাগবে।

প্রথমেই দেখা যাক নেভিগেশন। ফাইলের মধ্যে ডানে-বাঁয়ে, ওপরে-নিচে যাওয়ার জন্য সাধারণভাবে অ্যারো কি ব্যবহার করা যায়। এছাড়া কমান্ড মোডে h (left), j (down), k (up), l (right) ব্যবহার করে নেভিগেট করা যায়। এগুলো যেহেতু সরাসরি হাতের নিচে থাকে, তাই অ্যারো কি-এর চেয়ে দ্রুত ব্যবহার করা যায়। প্রথম প্রথম এগুলো একটু ঝামেলার মনে হবে, কিছু সময় পর ঠিক হয়ে যাবে।

ওপরে বলা নেভিগেশন কি দিয়ে হয়তো এক ক্যারেক্টার বা এক লাইন করে নেভিগেট করা যায়। কিন্তু আমাদের যদি আরো দ্রুত নেভিগেশনের প্রয়োজন হয়? যেমন : কোনো ফাইলের শেষে বা শুরুতে, লাইনের শেষে/শুরুতে, কিংবা নির্দিষ্ট কোনো লাইনে যেতে হয়? এগুলোর জন্যও চমৎকার ব্যবস্থা রয়েছে ভিমে।

ফাইলের শুরুতে যেতে কমান্ড মোড থেকে টাইপ করতে হবে gg। ফাইলের শেষে যেতে চাইলে টাইপ করতে হবে G (অর্থাৎ Shift + g)। Shift + 4 ($) চাপলে কার্সর লাইনের শেষে চলে যাবে। Shift + 6 (^) চেপে যাওয়া যাবে লাইনের শুরুতে। এগুলো কিন্তু কেবল পড়ে গেলে হবে না। কোনো টেক্সট ফাইলে সবকিছু নিজে পরীক্ষা করে দেখতে হবে। শুধু পড়ে/ভিডিও দেখে কখনো শেখা যায় না, অনুশীলন করে করে শিখতে হয়।

নির্দিষ্ট কোনো লাইনে যেতে চাইলে প্রথমে ওই লাইন নম্বর লিখতে হবে, এরপর gg টাইপ করতে হবে। যেমন : ১২নং লাইনে যেতে চাইলে টাইপ করতে হবে 12gg। একদম সহজ, তাই না? আচ্ছা, এখানে একটু সমস্যা হচ্ছে বোধহয়। ভিমে লাইন নম্বর দেখা যাচ্ছে না (অনেক সিস্টেমে দেখা যেতেও পারে, বিশেষ করে ভিম প্রি-ইনস্টলড থাকলে)। লাইন নম্বর দেখা না গেলে কমান্ড মোড থেকে টাইপ করুন :set number

চমৎকার! বাঁ পাশে এখন লাইন নম্বর দেখা যাচ্ছে। ভিম থেকে একবার বেরিয়ে গেলে লাইন নম্বর আবার হারিয়ে যাবে। হারিয়ে যাওয়া কীভাবে রোধ করতে হয়, তা তৃতীয় পর্বের আলোচ্য বিষয়। ভিম থেকে না বেরিয়ে লাইন নম্বর সরিয়ে ফেলতে টাইপ করুন :set nonumber

অনেক সময় আমাদের শব্দ ধরে ধরে এগোতে হতে পারে, সাধারণ এডিটরে Ctrl + left/right arrow যা করা যায় আর কি। ভিমে সেটি আরো সহজে করা যায়। w চেপে সামনের দিকে, b চেপে পেছনের দিকে যাওয়া যায়।

ধরুন, বড় একটি ফাইলের কোথাও পরিবর্তন করেছেন, এরপর ফাইলের অন্য স্থানে গিয়ে দেখলেন আগের পরিবর্তনটি করা ঠিক হয়নি। `. (ব্যাকটিক + ডট) চেপে সরাসরি যেখানে পরিবর্তন করেছিলেন, সেখানে চলে যেতে পারেন।

অনাকাঙ্খিত পরিবর্তনের পর আনডু (undo) করতে কমান্ড মোড থেকে u চাপুন। একাধিকবার আনডু করার জন্য একাধিকবার u চাপুন। রিডু (redo) করার জন্য Ctrl + r চাপুন।

ভিমে কপি/পেস্ট বিভিন্ন রকম হতে পারে। ভিমের ভেতর থেকে কপি করে ভিমের ভেতর পেস্ট করার জন্য ভিজ্যুয়াল (VISUAL) মোডে যেতে হবে। যে জায়গা থেকে কপি করতে চান, প্রথমে সেখানে যান। এরপর কমান্ড মোড থেকে v চেপে ভিজ্যুয়াল মোডে যান। এবার সাধারণ নেভিগেশন কি (h, j, k, l, w, b, $, ^, gg, G ইত্যাদি সবই) ব্যবহার করে কাঙ্ক্ষিত টেক্সট সিলেক্ট করুন। সিলেক্ট করা হয়ে গেলে y চাপুন, টেক্সট কপি হয়ে যাবে। এখন এই টেক্সট ভিমের ভেতর যেকোনো জায়গায় পেস্ট করতে p চাপুন। লাইন ধরে সিলেক্ট করতে চাইলে Shift + v চাপুন। এতে VISUAL LINE মোড চালু হবে। Ctrl + v চেপে ভিজ্যুয়াল ব্লক মোডে যেতে পারেন। এই মোডে ব্লক আকারে টেক্সট সিলেক্ট করা যায়।

ভিমের ভেতর থেকে কপি করে বাইরে (যেমন : ব্রাউজারে) পেস্ট করার জন্য Shift চেপে ধরে মাউস দিয়ে কাঙ্ক্ষিত টেক্সট সিলেক্ট করে Ctrl + Shift + c চাপুন। উইন্ডোজে মাউস দিয়ে সরাসরি সিলেক্ট করে Ctrl + C চেপে কপি করা যাবে। এটি ভিমের নিজস্ব পদ্ধতি নয়, টার্মিনাল থেকে কপি করার পদ্ধতি। ভিমের নিজস্ব পদ্ধতি কিছু ক্ষেত্রে জটিল হতে পারে বলে এখানে এড়িয়ে যাওয়া হলো। বাইরে থেকে কপি করে ভিমে পেস্ট করতে টার্মিনালে পেস্ট করার শর্টকাট (সাধারণত Ctrl + Shift + v, উইন্ডোজে রাইট ক্লিক বা Ctrl + v) কাজ করবে। এছাড়া Shift + Insert চেপেও পেস্ট করা যায়।

ভিমে কাট (cut) আর ডিলিটের ধারণা একই। ভিমে যা কিছু ডিলিট করা হয়, তার সবই রেজিস্টারে থেকে যায়, যা পরে পেস্ট করা যায়। ভিজ্যুয়াল মোডে গিয়ে সিলেক্ট করে Delete কি বা x বা d চাপলে ডিলিট হবে। p চেপে টেক্সটকে এখন যেকোনো জায়গায় পেস্ট করা যাবে। কোনো লাইনে কার্সর রেখে dd চাপলে ওই লাইনটি ডিলিট হয়ে যাবে। কমান্ড মোডে d চাপলে ডিলিট অপারেশন শুরু হয়। এরপর নেভিগেশন কি ব্যবহার করে ডিলিট (তথা কাট) করা যায়। যেমন : লাইন ৫ থেকে লাইন ১০ পর্যন্ত কাট/ডিলিট করতে চাপতে হবে 5ggd10gg। দেখতে এটি হয়তো হিবিজিবি, কিন্তু ধারণা সহজ। 5gg চাপলে কার্সর চলে যাবে ৫নং লাইনে। এরপর d চাপলে ডিলিট অপারেশন শুরু হবে। 10gg টাইপ করার পর কার্সর চলে গেল ১০নং লাইন পর্যন্ত। মানে ৫ থেকে ১০ পর্যন্ত লাইনগুলো ডিলিট হয়ে গেল। কোনো শব্দের শুরুতে কার্সর নিয়ে dw লিখে শব্দটি ডিলিট করতে পারেন। শব্দের শেষ থেকে ডিলিট করতে db ব্যবহার করা যাবে।

কপি-পেস্ট নিয়ে মজার একটি ট্রিক বলি। যেকোনো জায়গা থেকে কোনো টেক্সট সিলেক্ট করে রেখে (কপি না করে) ভিমে এসে মাউসে মিডল ক্লিক (হুইলে চাপ দিন) করুন, সিলেক্ট করা টেক্সট পেস্ট হয়ে যাবে। এটি শুধু ভিম নয়, যেকোনো জায়গায় হবে। ভিমে যদি পেস্ট না হয়, তাহলে টার্মিনালের প্রিফারেন্স/সেটিংস ওপেন করে Middle click paste/Paste on middle click বা এ রকম কিছু চালু করে নিতে হবে। আধুনিক সব টার্মিনালে ডিফল্টভাবে এটি চালুই থাকে। উল্লেখ্য যে, এটি কেবল টার্মিনালে নয়, অন্যান্য সব জায়গায় কাজ করবে। টাচপ্যাডে তিন আঙুলে একসাথে ট্যাপ করলে মিডল ক্লিক হবে। উইন্ডোজে এটি কাজ করবে না।

এখন পর্যন্ত দেখলেন নেভিগেশন এবং কাট-কপি-পেস্ট। এবার সার্চ এবং রিপ্লেস দেখা যাক।

সার্চিংয়ের জন্য কমান্ড মোডে / (ফরওয়ার্ড সার্চ) বা ? (ব্যাকওয়ার্ড সার্চ) ব্যবহার করতে পারেন। ধরুন, আপনি hello শব্দটি খুঁজবেন। কমান্ড মোডে /hello লিখে এন্টার চাপুন। শব্দটি যেখানে প্রথম পাওয়া যাবে, কার্সর সেখানে চলে যাবে। যদি পাওয়া না যায়, তাহলে একটি এরর দেখা যাবে, Pattern not found। এখন শব্দটির পরের অবস্থানে যেতে n চাপুন। আগের অবস্থানে যেতে Shift + n চাপুন।

মনে করুন, আপনি search শব্দটিকে replace দিয়ে রিপ্লেস করবেন। কমান্ড মোড থেকে নিচের মতো টাইপ করুন,

:%s/search/replace/g

এতে search লেখাগুলো মুছে গিয়ে replace হয়ে যাবে। শেষের /g মানে হচ্ছে পুরো ডকুমেন্টে এই সার্চ এবং রিপ্লেসের ঘটনা ঘটবে। রিপ্লেস করার আগে কনফার্মেশনের জন্য c যোগ করে দেওয়া যায় –

:%s/replace/search/gc

এতে প্রতিবার রিপ্লেস করার আগে y/n দিয়ে নিশ্চিত করা যাবে।

এমন হতে পারে যে আপনি কোনো ফাইল ওপেন করেছেন, এতে কিছু পরিবর্তন করেছেন, কিন্তু সেভ না করেই বেরিয়ে যেতে চাইছেন। ভিম এক্ষেত্রে আপনাকে বাধা দেবে। জোর করে বেরিয়ে যেতে :q! ব্যবহার করুন। আবার ওপেন করা ফাইলটি হয়তো নতুন নামে সেভ করতে চাচ্ছেন (Save as-এর মতো), সেজন্য টাইপ করুন :w <filename>। এখন এই ফাইলে যা কিছু করবেন তার সবই <filename> ফাইলে সেভ হবে, মূল ফাইলটির কিছু হবে না।

মোটামুটি এডিটিংয়ের জন্য আমাদের এগুলোই লাগবে। তবে ভিমের চমৎকার একটি জিনিস, স্প্লিট স্ক্রিনের সাথে একটু পরিচয় করিয়ে দিই। একইসাথে উল্লেখ্য যে, অন্যান্য এডিটরের মতো ভিমেও বিল্টইন ফাইল ম্যানেজার রয়েছে। নিচে দেখানো স্প্লিট স্ক্রিন ফিচার, এবং ফাইল ম্যানেজিং ফিচারের সমন্বয়ে ভিমকে একটি আইডিই হিসেবে ব্যবহার করা যায়। ফাইল ম্যানেজিং এই সিরিজের আওতাভুক্ত নয়। আপনি চাইলে সার্চ করে বা ম্যানুয়েল দেখে শিখে নিতে পারেন।

ভিমে একটি ফাইল ওপেন করুন। Ctrl + w চেপে v চাপুন। এডিটর দুইভাগে ভাগ হয়ে যাবে। অনুভূমিকভাবে ভাগ করতে Ctrl + w চেপে s চাপুন। এখন কিছু একটা লেখার চেষ্টা করুন, দেখবেন সবগুলো অংশেই একসাথে পরিবর্তন হচ্ছে, যেহেতু একই ফাইল সবগুলো উইন্ডোতে ওপেন হয়েছে। Ctrl + w + w চেপে আপনি একে একে সবগুলো উইন্ডোতে যেতে পারেন। এছাড়া Ctrl + w + h/j/k/l ব্যবহার করে বাঁয়ে/ নিচে/ওপরে/ডানে যেতে পারবেন। কোনো উইন্ডোতে কোনো ফাইল ওপেন করতে চাইলে ওই উইন্ডোতে গিয়ে কমান্ড মোডে লিখুন :open <filename>

সাধারণভাবে উইন্ডোগুলো সমান দৈর্ঘ-প্রস্থের হবে। Ctrl + w চেপে <, >, -, + চাপলে উইন্ডোগুলোর আকার বিভিন্ন দিকে ছোট-বড় হবে। সেটি আপনি নিজে নিজে কিছুক্ষণ পরীক্ষা করে দেখে নিন। সবগুলো সমান করতে Ctrl + w চেপে = চাপুন।

কোনো নির্দিষ্ট উইন্ডো বন্ধ করতে সেখানে গিয়ে কমান্ড মোডে লিখুন :close। কোনো উইন্ডোতে :open <filename> ব্যবহার করে একাধিক ফাইল ওপেন করতে পারেন। পূর্বের ফাইলে ফিরে যেতে :bp, পরের ফাইলে যেতে :bn কমান্ড ব্যবহার করুন।

এই লেখায় মোটামুটি এই পর্যন্তই। এখানে অল্প কিছু জিনিস দেখানোর চেষ্টা করলাম। দৈনন্দিন কাজে মোটামুটি এগুলোই লাগবে। লিনাক্সে যারা নতুন, তাদের বুঝতে একটু সমস্যা হতে পারে। চেষ্টা করেছি যথাসম্ভব সহজ করে লেখার, তারপরও কঠিন হলে আপাতত কিছু করার নেই।

ভিমকে নিজের প্রয়োজন ও রুচি অনুসারে সাজিয়ে নেওয়া জরুরি। শেষ পর্বে এ নিয়ে কিছুটা লেখার চেষ্টা করেছি।

— মোশারফ হোসেন

ভিম : পরিচিতি

(যারা ভিমের সঙ্গে কিছুটা পরিচিত, তারা সরাসরি দ্বিতীয় পর্বে চলে যেতে পারেন।)

ভিম (Vim – Vi IMproved) হচ্ছে ইউনিক্সভিত্তিক এডিটর ভি (Vi)-এর একটি উন্নত সংস্করণ। এটি অত্যন্ত শক্তিশালী, সহজ (?), হাইলি কনফিগারেবল এডিটর। এই আর্টিকেল লেখা পর্যন্ত ভিমের সর্বশেষ সংস্করণ হচ্ছে ৮.২, আমি ৮.১ ব্যবহার করছি। আপনার সিস্টেমে অন্য কোনো সংস্করণ থাকলেও সমস্যা নেই। ভিম না থাকলে ইনস্টল করে নিতে হবে। ডেবিয়ান/উবুন্টুভিত্তিক ডিস্ট্রোগুলোতে sudo apt install vim, আর্চ/মানজারোতে sudo pacman -S vim কমান্ড দিয়ে ইনস্টল করা যাবে। উইন্ডোজের জন্য ডাউনলোড করা যাবে এখান থেকে – https://www.vim.org/download.php

কমান্ডলাইনভিত্তিক, শক্তিশালী, হালকাপাতলা, আধুনিক ফিচারসমৃদ্ধ হওয়ায় ভিম অত্যন্ত জনপ্রিয়। সার্ভার কম্পিউটার বা যেখানে গ্রাফিক্যাল ইউজার ইন্টারফেস নেই, বিশেষ ক্ষেত্রে পার্সোনাল কম্পিউটারে ছোট-বড় বিভিন্ন ফাইল এডিট করার জন্য ভিম অদ্বিতীয়। যদিও এসব কাজে ন্যানো (nano) ব্যবহার করা যায়, কিন্তু নামের মতো ফিচারেও এটি ন্যানো। প্রোগ্রামিং করার জন্যও এটি একটি অসাধারণ এডিটর। দ্রুত নেভিগেশনের জন্য, ভিজ্যুয়াল স্টুডিও কোড, জেটব্রেইনসের সব আইডিই, ইকলিপ‍্স ইত্যাদিতে ভিমের জন্য প্লাগইন কিংবা এক্সটেনশন রয়েছে।

আপনি যদি না জানেন যে ভিম ‘কেন’ ব্যবহার করবেন, তাহলে ইন্টারনেটে একটু খুঁজে নিন। এখানে কেবল ‘কীভাবে’ নিয়ে কথা বলব। এখানে দেখানো সবকিছু যে বসে বসে মুখস্ত করতে হবে, তা নয়। অনেক কিছুই সাধারণত প্রয়োজন হবে না, বা একবার কনফিগার করে নিলেই হবে। পরে যা কিছু দরকার হবে প্রয়োজনমতো দেখে নেওয়া যাবে। এই সিরিজে আমি কেবল দরকারি কিছু বিষয় দেখানোর চেষ্টা করব। কারণ, আমিও বেশি কিছু জানি না। তবে এগুলো জানলেই মোটামুটি ভিম নিয়ে সুখে সংসার করা যাবে।

প্রাথমিকভাবে এই সিরিজটি আমি তিন ভাগে লিখব বলে ভাবছি –

  1. এডিটর পরিচিতি
  2. সাধারণ এডিটিং
  3. কনফিগারেশন এবং কাস্টমাইজেশন

তো পরিচিতিটা সেরে নেওয়া যাক। টার্মিনাল খুলে vim লিখে এন্টার চাপলে নিচের মতো ইন্টারফেস দেখা যাবে –

এখানে বেশ কিছু তথ্য দেখা যাচ্ছে। যেহেতু কোনো close কিংবা quit বাটন দেখা যাচ্ছে না, তাই প্রথমে আমাদের জানতে হবে যে, এখান থেকে বের হওয়া যায় কীভাবে (অবশ্যই টার্মিনাল বন্ধ না করে)। আপনি নিশ্চয়ই একটি লাইন দেখতে পাচ্ছেন – type :q<Enter> to exit

অর্থাৎ :q লিখে এন্টার চাপলে আমরা এখান থেকে বের হতে পারব। এখানে q মানে quit; চাইলে :quit লিখেও বের হওয়া যায়।

অসাধারণ! আপনি ভিমে প্রবেশ করে বের হয়ে গেলেন! এই বের হওয়াটা অনেক কঠিন, এতই কঠিন যে এ নিয়ে শত শত মিম (meme) ইন্টারনেটে ঘুরছে। তো এত কঠিন যেহেতু, এটা শেখার দরকার কী? ভালো কথা, হোঁচট খাওয়ার ভয়ে হাঁটতে না শেখার মতো।

এবার তাহলে আসল কাজ শুরু করা যাক। ভিম ব্যবহার করে একটি ফাইলে ‘hello vim’ কথাটি লিখতে হবে। সে জন্য টার্মিনালে প্রথমে নিচের কমান্ড দিয়ে একটি ফাইল তৈরি করে নিন –

$ touch hello.txt

(কমান্ডের আগে $ চিহ্নের মানে হচ্ছে এটি শেল কমান্ড। অর্থাৎ একে টার্মিনালে চালাতে হবে। টার্মিনালে লেখার সময় $ চিহ্ন বর্জন করতে হবে। # চিহ্ন থাকলে বুঝতে হবে কমান্ডটি রুট প্রিভিলেজসহ চালাতে হবে, অর্থাৎ কমান্ডের আগে sudo যোগ করে নিতে হবে।)

এতে hello.txt নামের একটি খালি (Empty) ফাইল তৈরি হবে। এবার ফাইলটি ভিমে ওপেন করতে হবে। সেজন্য নিচের কমান্ডটি লিখুন –

$ vim hello.txt

আপনার ফাইলটি ভিমে ওপেন হয়ে গেল। একটি ফাঁকা উইন্ডো দেখবেন, যার একেবারে শেষে নিচের মতো একটি লাইন থাকবে।

এখানে বেশ কিছু তথ্য রয়েছে। একেবারে বাম দিকে আছে ফাইলের নাম। তারপরে আছে 0L, 0C, মানে ফাইলটিতে বর্তমানে 0টি লাইন, 0টি ক্যারেক্টার রয়েছে, অর্থাৎ কিছুই নেই। ডান দিকে আছে কার্সরের অবস্থান, এবং ফাইলটির কতটুকু অংশ এই উইন্ডোতে দেখা যাচ্ছে। এগুলো এখনই না বুঝলেও সমস্যা নেই। শেখার সবচেয়ে ভালো পদ্ধতি হচ্ছে “ব্যবহার করতে করতে শেখা”।

এবার আমরা আমাদের লেখালেখি শুরু করতে পারি। কিবোর্ড থেকে h চাপুন, কিছু দেখতে পাচ্ছেন? না। ভিমে অনেকগুলো মোড (mode) আছে। কোনো ফাইল ওপেন করলে শুরুতে ভিম থাকে কমান্ড মোডে (একে নরমাল মোডও বলা হয়)। অর্থাৎ এই মোডে বিভিন্ন কমান্ড চালানো যায়। লেখালেখি করার জন্য আমাদের দরকার ইনসার্ট মোড। ইনসার্ট মোডে যাওয়ার জন্য কিবোর্ড থেকে ‘i’ চাপতে হবে। ‘i’ চাপার সঙ্গে সঙ্গে টার্মিনালের নিচে দেখুন ছবির মতো -- INSERT -- লেখা উঠেছে –

এখন আমরা যা ইচ্ছা তাই লিখতে পারি। চটপট hello vim লিখে ফেলুন তাহলে। এবার লেখাটি সেভ করতে হবে। সেভ করার জন্য আবার কমান্ড মোডে ফিরে যেতে হবে। কমান্ড মোডে যাওয়ার জন্য চাপতে হবে Esc কি (F1-এর বাঁ পাশে)। এবার সেভ করার জন্য নিচের কমান্ডটি লিখুন –

:write

সামনের কোলন চিহ্নটি দিতে ভুলবেন না। এটি লিখে এন্টার চাপলেই ফাইলটি সেভ হয়ে যাবে। এবার তাহলে আমাদের ভিম থেকে বের হতে হবে। কীভাবে মনে আছে তো? :quit বা :q। টার্মিনালে cat hello.txt কমান্ড দিয়ে দেখতে পারেন যে সত্যিই ফাইলটি সেভ হয়েছে কি না।

এবার আমরা নতুন একটি ফাইল তৈরি করব। আগের মতো touch কমান্ড ব্যবহার করার দরকার নেই, সরাসরি ভিম ব্যবহার করেই ফাইল তৈরি করা যায়। ফাইল ওপেন করার যে পদ্ধতি, ফাইল তৈরি করারও সেই একই পদ্ধতি। তাহলে টার্মিনালে লিখে ফেলুন –

$ vim file.txt

এতে ভিম উইন্ডো খুলবে। উল্লেখ্য যে, ফাইলটি কিন্তু এখনো তৈরি হয়নি (আসলে একটি অস্থায়ী ফাইল তৈরি হয়েছে। তবে সেটি নিয়ে আমরা পরে মাথা ঘামাব), :write লিখে সেভ করলেই ফাইলটি তৈরি হবে। এবার i চেপে এতে ইচ্ছেমতো কিছু লিখুন। এরপর Esc চেপে লিখুন :wq। কী হলো? ফাইলটি সেভ হলো, ভিমও বন্ধ হলো। :write কমান্ডটিকে সংক্ষেপে :w লেখা যায়, আর :q-এর সঙ্গে তো আগে থেকেই পরিচিত। এই দুটি কমান্ডকে সংক্ষেপে একত্রে :wq লেখা যায়। এটি লেখা সহজ ও দ্রুততর। এখন থেকে আমরা এভাবেই লিখব।

ওপরের আলোচনার সারমর্ম হলো :

  • vim <filename> দিয়ে যেকোনো ফাইল খোলা/তৈরি করা যাবে
  • লেখালেখির আগে ইনসার্ট মোডে যেতে হবে
  • কমান্ড চালানোর জন্য (যেমন : ফাইল সেভ করা) কমান্ড মোডে যেতে হবে
  • i চেপে ইনসার্ট মোড, Esc চেপে কমান্ড মোডে যেতে হবে
  • :wq দিয়ে একইসঙ্গে সেভ করা এবং ভিম থেকে বের হওয়া যাবে

পরের পর্বে রয়েছে দৈনন্দিন লেখালেখির জন্য গুরুত্বপূর্ণ কিছু বিষয়।

—মোশারফ হোসেন