- vi-এর ইতিহাস
১৯৯৯ সালে বিল জয় তার এক সাক্ষাৎকারে যে সমস্ত বিষয় তাকে এই vi এডিটর তৈরীতে অনুপ্রানিত করেছিল তা বর্ননা করেন তার নিজের ভাষায়ঃ
… আমরা ed নামে যে এডিটরটি ব্যবহার করছিলাম তা নিয়ে খুবই হতাশ হয়ে পড়েছিলাম। ed সত্যিকার অর্থেই ছিল ব্যর্থ। আমরা এর কোডগুলি জর্জ কুলাউরিস নামে একজন ব্যক্তির কাছ থেকে পেয়েছিলাম … যেটিকে আমরা বলতাম মৃত ব্যক্তিদের জন্য em - Editor - যেহেতু একমাত্র অমরদের পক্ষেই এটিকে দিয়ে সব কাজ করা সম্ভব। সুতরাং আমরা em কে পরিবর্তিত করলাম এবং en তৈরী করলাম। আমি জানিনা পরবর্তীতে এর অন্যকোন ভার্সন যেমন eo অথবা ep বের হয়েছিল কিনা তবে শেষ পর্যন্ত আমরা ex পেয়েছিলাম।(হাসতে হাসতে বললেন) en এর কথা আমি মনে করতে পারি কিন্তু আমি জানিনা কিভাবে এটি ex এ পরিনত হয়েছিল। আমার বাসায় একটি টার্মিনাল ছিল এবং সাথে ছিল একটি ৩০০ বড মডেম যা দিয়ে আমি কার্সরকে মুভ করাতে পারতাম এবং কয়েকমাস দিনরাত প্রানান্ত চেষ্টার পর vi লিখতে সমর্থ হই।
- vi কেন?
vi এর সাম্প্রতিক ক্লোনগুলির অধিকাংশই যথেষ্ট উন্নত ফিচার সম্পন্ন হওয়ায় আপনি একটি ডকুমেন্ট টাইপ করার সময়ই ডকুমেন্টের টাইপ অনুযায়ী সে টেক্সট গুলিকে ইনডেন্টিং করা বা আপনার প্রোগ্রামিং এর সিনট্যাক্স অনুযায়ী হাইলাইট করার অপশনগুলি স্বয়ংক্রিয়ভাবেই পেয়ে যাবেন যা আপনার কাজকে অনেক সহজ করে দেবে। ইউনিক্স এর প্রথা অনুযায়ী যে সমস্ত ফিচারগুলি অপ্রয়োজনীয় সেগুলি বন্ধ করে রাখতে পারেন আপনার পছন্দ অনুযায়ী এবং সামান্য কয়েক মিনিট সময় ব্যয় করেই আপনি vi কে আপনার পছন্দ অনুযায়ী কাস্টোমাইজ করে ভবিষ্যতের অনেক সময় বাঁচাতে পারেন।
- কার্যপ্রনালী
কমান্ড মোডে vi তে আপনি টেক্সট পেস্ট করা থেকে শুরু করে একটি শেল চালু করা বা বন্ধ করার মত যেকোন সংখ্যক ফাংশন পরিচালনার নির্দেশ দিতে পারেন। vi তে বেশীরভাগ কমান্ডই খুব সংক্ষিপ্ত এবং একটি অক্ষর চেপেই তা দেয়া সম্ভব। এমনকি ইনসার্ট মোড এ প্রবেশ করতে হয় কমান্ড মোড থেকেই। ইনসার্ট মোডে আপনি শুধুমাত্র লিখতে পারবেন। ব্যতিক্রম বলতে শুধুমাত্র নতুন লেখা ব্যাকস্পেস-কি দিয়ে মুছে সংশোধন করতে পারবেন -ব্যস এটুকুই। ইনসার্ট মোডে লেখা কপি পেস্ট করতে পারবেন না, সার্চ করতে পারবেন না বা ডকুমেন্ট কে সংরক্ষন/সেভ করতে পারবেন না। সব কিছুই কমান্ড মোড এ করতে হবে।
এ দু’মোডই আপনাকে ব্যাপকভাবে ব্যবহার করতে হবে vi তে এবং একবার অভ্যস্ত হয়ে গেলে দেখবেন আপনার বর্তমান ব্যবহৃত এডিটর (নোটপ্যাড, ওয়ার্ড বা অন্য যেকোন এডিটর) থেকেও আপনি কত দ্রুতগতিতে vi এর মাধ্যমে ডকুমেন্ট নিয়ে কাজ করতে পারছেন।
- মোড এর ব্যবহার এবং লেখালেখি করা
যখন আপনি প্রথম vi চালু করবেন (যেকোন শেল ওপেন করে vi টাইপ করে এন্টার কি চাপুন), আপনি নিচের মত একটি স্ক্রিন পাবেনঃ
~
~
~
~
~
~
প্রতিটি টাইলড(~) এর প্রতীক একটি লাইনকে নির্দেশ করে যেখানে কোন কিছু লেখা নাই । টাইলড কি দিয়ে একটি ফাঁকা লাইন এবং একটি লাইন যার অভ্যন্তরে কোন কিছু নাই - তার মধ্যে পার্থক্যকে নির্দেশ করে অর্থাৎ আপনি যখন এন্টার কি প্রেস করেন তখন একটি নতুন লাইন সৃষ্টি হয় যেটি দেখতে ফাকা মনে হলেও সেখানে একটি নতুন লাইন ক্যারেক্টার থাকে যা একটি নতুন লাইনকে নির্দেশ করে। vi প্রথমে চালু হলে আপনি একে কমান্ড মোডে পাবেন। এখানে একটু মনে রাখতে হবে যে, vi তে কমান্ডগুলি কিন্তু কেস সেনসিটিভ অর্থাৎ বড় হাতের এবং ছোট হাতের অক্ষরকে সে আলাদাভাবে বিবেচনা করে থাকে - উদাহরনস্বরূপ ছোট হাতের i এবং বড় হাতের I কখনই এক রকম কমান্ড এর নির্দেশ হবে না।
নতুন কিছু লিখতে প্রথমেই i চাপুন তাহলে আপনি ইনসার্ট মোডে প্রবেশ করবেন। আপনি এখন থেকে যা টাইপ করবেন তা ডকুমেন্টে নতুন লেখা হিসেবে টাইপ হতে থাকবে। এখন কিছু শব্দ লিখতে থাকুন এবং ব্যাকস্পেস কি চেপে কিছু লেখা মুছে আবার নতুন কিছু লিখুন।
এস্কেপ(Esc) কি চাপ দিলে আপনি ইনসার্ট মোড থেকে বেরিয়ে পূনরায় কমান্ড মোডে প্রবেশ করতে পারবেন। কয়েকবার মোড পরিবর্তন করুন আর কিছুটা অভ্যস্ত হওয়া পর্যন্ত একই কাজ করতে থাকুন। এখন vi থেকে বের হওয়ার জন্য আপনি কমান্ড মোডে সুইচ করুন প্রথমে তারপর টাইপ করুন :q (colon q) এবং enter কি চাপুন। সম্ভবত আপনার প্রত্যাশানুযায়ী এটি বের না হয়ে একটি বার্তা প্রদর্শন করবে যেখানে একটি সতর্কতাস্বরূপ সে জানতে চাইবে আপনি ডকুমেন্ট সংরক্ষন করতে চান কি না? যেহেতু আমরা ডকুমেন্টটি সংরক্ষন করবো না তাই আমরা vi কে একটি কমান্ড দিব যাতে সে এই বার্তা প্রদশন না করে। তাই টাইপ করুন :q! (colon q exclamation mark) এবং enter চাপুন। এখন vi এডিটর থেকে বের হয়ে আপনি পূনরায় শেল এ যেতে পারবেন।
- ডকুমেন্টে স্থানান্তর করার পদ্ধতি
vi তে স্থানান্তর করার কমান্ডগুলি নিম্নরূপঃ
• h - বামে
• j - নিচে
• k - উপরে
• l - ডানে
কি সহজ মনে হচ্ছে না? যদি ও আধুনিক vi এর সংস্করনগুলিতে এ্যারো কি ব্যবহার করে করে মুভ করা যায় কিন্তু উপরের কি-গুলি ব্যবহারের মাধ্যমে আপনি সব ভার্সনের vi তেই সঠিকভাবে কাজ করতে পারবেন। তাই এটি শিখে রাখা অত্যন্ত গুরুত্বপূর্ণ যাতে আপনাকে কোন একটি বিশেষ ভার্সন এর vi উপর নির্ভর না করতে হয়। এটি শেখার আরেকটি সুবিধা হচ্ছে যে আপনি কি-বোর্ডের কেন্দ্র থেকেই স্থানান্তর করতে পারছেন ফলে টাইপিং স্পিড অনেকগুন বেড়ে যাবে। তাই চেষ্টা চালিয়ে যান।
vi এ স্থানান্তর করার জন্য সার্চ ফাংশনগুলির গুরুত্ব অনেক। কমান্ড মোডে থাকা অবস্থায় টাইপ করুন /
সার্চ এর ব্যবহার করার সময় মনে রাখতে হবে যে কিছু বিশেষ অক্ষর vi তে বিশেষ অর্থ বহন করে। উদাহরনস্বরূপ ফুল স্টপ অক্ষরটি (.) বলতে যেকোন অক্ষর ম্যাচ করাকে বোঝায়। অর্থাৎ আপনি যখন সার্চ করবেন /192.168, তখন 192.168.1.125 শব্দটি ও খুজে পাবে, কিন্তু সে একইসাথে 1920168 শব্দটি ও খুজে পাবে। আপনি এ সমস্ত বিশেষ অক্ষরের আগে একটি স্ল্যাশ ব্যবহার করে এ সমস্যার সমাধান করতে পারেন । আগের উদাহরনে আপনি যদি প্রথম প্যাটার্নটি খুজে পেতে চান দ্বিতীয়টির বদলে তাহলে টাইপ করুন /192\.168।
- লেখা সংশোধন করা
আমরা ইতিমধ্যেই জেনেছি যে, i টাইপ করলে আমাদেরকে ইনসার্ট মোডে কার্সর অবস্থানে নিয়ে যায়। এছাড়া আরো কয়েকটি উপায় রয়েছে ইনসার্ট মোডে যাওয়ার। উদাহরনস্বরূপ, যদি I টাইপ করেন, আপনি ইনসার্ট মোডে প্রবেশ করে বর্তমান লাইনের একদম শুরুতে যেতে পারবেন। a টাইপ করে আপনি বর্তমান কার্সরের ডান দিক লেখা থেকে শুরু করতে পারেন এবং A টাইপ করে বর্তমান লাইনের একদম শেষ থেকে শুরু করতে পারবেন। কার্সরের নিচে একটি ফাকা লাইন তৈরী করে লেখার জন্য o টাইপ করুন এবং উপরে তৈরীর জন্য O চাপুন।
একটি একটি করে অক্ষর মুছতে হলে কার্সরটাকে টেক্সট এর সামনে নিয়ে আসুন আর চাপতে থাকুন x। আর ব্যাকস্পেস এর মত অন্যদিক থেকে মুছতে চাপুন X। ব্যস মোছামুছি শিখে গেলেন-তাই না? পুরো লাইন মুছতে চান? তাহলে টাইপ করুন dd। আর একটি শব্দ মুছতে চাপুন dw তাহলে পরের শব্দটি গায়েব হয়ে যাবে। বর্তমান কার্সর অবস্থান থেকে লাইনের শেষ মাথা পর্যন্ত মুছতে হলে D কমান্ড ব্যবহার করুন।
খুব বেশী মোছা হয়ে গেল কি? কোন সমস্যা নাই। আগের লেখা ফিরে পেতে চাপুন u এবং পুরো লাইন ফেরত পেতে U। vi এর কিছু ক্লোন মাল্টিলেভেল আনডু সাপোর্ট করে তাই একের অধিকবার u চাপলে আপনাকে এটি ডকুমেন্ট এ যত আগের অবস্থানে ছিলেন সেখানে নিয়ে যেতে থাকবে। এই আনডু কমান্ডটি ভালোভাবে শিখে নিন কারন তা প্রায়ই আপনার কাজে লাগবে।
- কপি এবং পেস্ট করা
নিশ্চয়ই অনুমান করতে কষ্ট হচ্ছে না যে, এজন্য কয়েকটি কমান্ড শিখতে হবে। yw টাইপ করলে একটি শব্দ কপি হবে, yy একটি লাইন কপি করবে, এবং y
কপি করা টেক্সট পেস্ট করাটা মোটেও কঠিন নয়- p চাপুন কার্সর এর আগে পেস্ট করতে চাইলে আর P চাপুন কার্সর এর পরে পেস্ট করতে চাইলে।
বাফার এর ব্যবহার সাধারন কপি এবং পেস্ট করা থেকে খুব একটা ভিন্ন নয়- একটি নির্দিষ্ট বাফারে কোন টেক্সট কপি করার জন্য টাইপ করুন- "x
- ফাইল সংরক্ষন করা
যদি আপনি vi চালু করে থাকেন একটি ফাইলনেমকে প্যারামিটার হিসেবে দিয়ে (যেমনঃ vi
যদি ডকুমেন্টের নতুন একটি কপি সংরক্ষন করতে চান (ধরি, ব্যাকআপ হিসেবে) অথবা যদি vi চালু করে থাকেন ফাইলনেম প্যারামিটার না দিয়ে তবে নতুন একটি নামসহ সংরক্ষন এর জন্য কমান্ড দিনঃ:w
একটি মাত্র কমান্ডের সাহায্যে vi থেকে বের হওয়ার জন্য টাইপ করুন:x অথবা :wq; দুটি কমান্ড এর কাজ মূলত একই। আপনি ZZ (কোলন ছাড়া) ব্যবহার করে ও ডকুমেন্ট সংরক্ষন করা ও বের হওযার কাজ করতে পারেন। আগের মত এখানে ও কমান্ড এর শেষে আপনি একটি বিস্ময়চিহ্ন ব্যবহার করে কোন বার্তা প্রদর্শন করা থেকে vi কে বিরত রাখতে পারেন।
- স্থানান্তরের আরো কয়েকটি কমান্ড
বড়সড় ফাইল প্রায়ই এডিটের প্রয়োজন হয়ে থাকে। তাই যদি লাইন বাই লাইন আপনি স্ক্রলিং করতে থাকেন তাহলে সেটি খুব একটি সুবিধার কাজ হবে না নিশ্চয়ই। এজন্য এক স্ক্রিন পরিমান সামনের দিকে স্থানান্তরের জন্য চাপুন ctrl-F এবং এক স্ক্রিন পিছনে যাওয়ার জন্য চাপুন ctrl-B। সামনের দিকে অর্ধেক পরিমান পেজ স্ক্রল করার জন্য চাপুন ctrl-D, অথবা পিছনে যাওয়ার জন্য ctrl-U । স্ক্রিন এর উপরে এক লাইন বেশী দেখার জন্য টাইপ করুন ctrl-Y এবং নিচে এক লাইন বেশী দেখার জন্য টাইপ করুন ctrl-E.
মাঝে মাঝে কার্সর এর উপর ভিত্তি করে পেজ এ স্থানান্তর করা বেশ সুবিধাজনক। z চাপার পর enter চাপলে বর্তমান কার্সর এর অবস্থানকে পেজ এর উপর স্থানান্তর করবে। z. পেজকে মধ্যভাগে নিয়ে যাবে এবং z- নিচের দিকে নিয়ে যাবে। এ কমান্ডগুলি কিছুটা ঝামেলপূর্ন হলে ও মনোযোগ দিয়ে শিখে রাখুন।
প্রোগ্রামিং করার এর সময় আরো একটি গুরুত্বপূর্ন কমান্ড কাজে লাগে আর সেটি হচ্ছে একটি নির্দিষ্ট লাইন নম্বরে স্থানান্তর করা। আপনি এটি:
- অনুসন্ধান এবং বদল করা
vi তে অনুসন্ধান এবং বদল করার কাজটি মূলত রেগুলার এক্সপ্রেশন ব্যবহার করেই করা হয়ে থাকে এবং এটি দিয়ে অনেক জটিল কাজ সম্পাদন করা সম্ভব। যেমন প্রথম সাতটি potato শব্দের জন্য দ্বিতীয় o টিকে পরিবর্তন করা অথবা দুটি p সম্বলিত যেকোন শব্দকে parrot শব্দ দিয়ে রূপান্তর করা ইত্যাদি। যেকোন সার্চ অপশনের মত এখানে ও সকল কিছুই কেস সেনসিটিভ। এটি বন্ধের জন্য কমান্ড দিন :set ic যাতে কেস সেনসিটিভিটি সংক্রান্ত সমস্যা এড়াতে পারেন।
সাধারন অনুসন্ধান এবং বদল করার কমান্ডগুলি খুবই সহজ; টাইপ করুন :s/foo/bar এর ফলে বর্তমান লাইনে foo শব্দটির বদলে bar শব্দটি দিয়ে বদল করতে পারবেন। ডকুমেন্টের কতটুকু অংশে এ পরিবর্তন করতে হবে তা নির্দিষ্ট করে দেয়া যায় - যেমন :1,4s/foo/bar টি দিলে ১-৪ নম্বর লাইনে যতগুলি পরিবর্তন করা সম্ভব তা করবে। সমস্ত ডকুমেন্টে পরিবর্তন করতে চাইলে টাইপ করুন:%s/chicken/dog যেখানে chicken এর বদলে সব জায়গাতে dog লেখা হয়ে যাবে, একই কমান্ড আরেকটু অন্যভাবে দিতে পারেন :1,$s/chicken/dog, যেখানে $ এর অর্থ একবারে শেষ লাইন পর্যন্ত।
যদি খুব বেশী পরিবর্তন এর আশঙ্কা করেন তবে প্রতিবার বদল করার সময় একটি বার্তা প্রদর্শনের অপশন দিতে পারেন। এজন্য অনুসন্ধান কমান্ড এর একদম শেষে /c অতিরিক্ত যোগ করুন যেমন :%s/abuot/about/c। /p অপশন ব্যবহার করে যতগুলি পরিবর্তন করা হবে সবগুলি একটি বার্তা এর মাধ্যমে দেখানোর কমান্ড দেয়া যায়।
- শেষকথা
0 comments:
Post a Comment