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

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

প্রথমেই দেখা যাক নেভিগেশন। ফাইলের মধ্যে ডানে-বাঁয়ে, ওপরে-নিচে যাওয়ার জন্য সাধারণভাবে অ্যারো কি ব্যবহার করা যায়। এছাড়া কমান্ড মোডে 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 কমান্ড ব্যবহার করুন।

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

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

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