মূল বিষয়ে

ভিম এলো কোথা থেকে

লেখক

বিদেশি

(টু-বিট হিস্ট্রি এর Where Vim Came From এর ভিত্তিতে লিখিত)

সূচনা

সাধারণত একটা বেশ অপ্রচলিত ফাইল ফরম্যাট হচ্ছে ইন্টেল হেক্স ফাইল, .hex এক্সটেনশনঅলা। যতটা বোঝা যায়, এর উদ্দেশ্য হচ্ছে বাইনারি ফাইলের বিষয়বস্তুকে হেক্সাডেসিমাল বর্ণের মাধ্যমে একটু পাঠযোগ্য ভাবে উপস্থাপন করা। মাইক্রোকন্ট্রোলার প্রোগ্রামিং বা রম‑এ ডাটা বার্ন করার কাজের ক্ষেত্রে এই ফরম্যাটের প্রচলন বেশি। যাহোক, প্রথমবার একটা হেক্সফাইল ভিম এডিটরে খুললে অবাক হয়ে যাওয়ার কথা। এমন দুর্লভ একটা ফাইলফরম্যাট (অন্তত আমার কাছে), কিন্তু ভিম আগে থেকেই এর আগাপাশতলা জেনে বসে আছে। হেক্স ফাইলের প্রতিটা লাইনে একাধিক অংশ থাকে – ভিম নিজে নিজে অংশগুলিকে আলাদা আলাদা রঙে রাঙিয়ে দিচ্ছে। অবাক গলায় ভিমকে যদি প্রশ্ন করি set ft?, সাথে সাথে ভিমের সপ্রতিভ উত্তর আসবে: filetype=hex!

ভিম কোথায় নেই। এত রকমের জায়গায় এর ব্যবহার, যে হেক্সের মত আরও অগণিত অপ্রচলিত ফাইল ফরম্যাটের সমর্থন ভিমে থাকবে, এটাই স্বাভাবিক। ম্যাকওএস‑এ ভিম প্রি-ইন্সটল করা থাকে, লিনাক্স জগতে তো ভিমের অবারিত চারণভূমি, এমনকি উইন্ডোজ, এবং অনেক অপ্রচলিত সিস্টেমেও ভিম‑এর উপস্থিতি আছে। এমনকি ভিম যাদের ভালো লাগে না, তারাও এর সাথে পরিচিত; অনেক প্রচলিত কমান্ডলাইন টুল সুযোগ পেলেই ভিম খুলে বসে। আর অনভ্যস্তরা ভিমে ঢুকে বের হতে পারছে না, এইটা তো প্রযুক্তি জগতে অন্যতম একটা মিম। বহুলব্যবহৃত অনেক ওয়েবসাইটেও ভিমের প্রভাব দেখা যায়: ফেসবুকে পর্যন্ত j/​k প্রেস করে নিচে আর ওপরে স্ক্রল করা যায়।

VIM - Vi IMproved
version 8.2.2891
by Bram Moolenaar et al.
Vim is open source and freely distributable
Help poor children in Uganda!
type :help iccf[Enter] for information
type :q[Enter] to exit
type :help[Enter] or [F1] for on-line help
type :help version8[Enter] for version info

তবে ভিম একটা রহস্যও বটে। সিংহভাগ চেনাজানা সফটওয়্যার প্রকল্পগুলির উৎস সহজেই জানা যায় (যেমন, সবাই জানে যে রিঅ্যাক্ট ফ্রেমওয়ার্ক ফেসবুকের তৈরি)। কিন্তু ভিম কোথা থেকে কার মাধ্যমে হাতে আসছে তা বের করা তেমন সোজা না। এত জনপ্রিয়তা আর গুরুত্ব সত্ত্বেও ভিমের বিষয়ে সিদ্ধান্ত নেয়ার জন্য কোন নির্দিষ্ট কমিটি বা প্রতিষ্ঠান চোখে পড়ে না। ভিমের ওয়েবসাইটে গিয়ে কয়েক মিনিট ধরে ঘোরাঘুরি করেও হয়ত কে একে বানালো কেন বানালো এইসবের উত্তর পাবেন না। কোন আর্গুমেন্ট ছাড়া ওপেন করলে ভিমের স্টার্টআপ স্ক্রিনে লেখা উঠে আসে, এটা নাকি “Bram Moolenaar et al.”-দের লিখিত। কিন্তু ব্রাম মুলেনার টা কে? আর ওই রহস্যঘেরা “et al.”-ই বা কারা?

এত প্রশ্নই যখন করছি, আরও জরুরি প্রশ্ন হতে পারে, ভিম থেকে বের হতে হলে কেন :wq টাইপ করতে হয়? হ্যাঁ, জানা থাকলে বোঝা যায়, এটা আসলে “write” এর পর “quit”, কিন্তু এটা কয়জন শুরুতেই বুঝতে পারে? কে ঠিক করলো যে ভিমে টেক্সট কপি করাকে “ইয়াঙ্ক করা” বলতে হবে? টেক্সট খুঁজে বের করে প্রতিস্থাপনের জন্য কেন :%s/foo/bar/gc এরকম ম্যাজিক লিখতে হবে? ভিমের অদ্ভুতুড়ে বৈশিষ্ট্যগুলো এতই অস্বাভাবিক, যে কোনো কারণ ছাড়াই এগুলো ঠিক করা হয়েছে বলে মনে হয় না। কিন্তু এই ধারণাগুলো কোত্থেকে আসলো?

এইসব প্রশ্নের উত্তর দেয়ার শুরু করতে হবে কম্পিউটিংয়ের প্রাচীন খেলাঘর বেল ল্যাবস থেকে। এক অর্থে বলা যায়, একটা প্রাচীন টেক্সট এডিটর সফটওয়্যারের ধারা — যাকে আমরা ডাকতে পারি “wq text editor” বলে — এর অত্যাধুনিক সংস্করণই হচ্ছে ভিম, যেটা কীনা ইউনিক্স যুগের শুরু থেকেই নিয়মিত ডেভেলপ হয়ে আসছে।

কেন থমসনের লাইন এডিটর

১৯৬৬ সালে কেন থমসন বেল ল্যাবসে নিয়োগ পান। তখন তিনি মাত্রই বার্কলির ইউনিভার্সিটি অফ ক্যালিফোর্নিয়া থেকে ইলেক্ট্রিকাল ইঞ্জিনিয়ারিং এবং কম্পিউটার সায়েন্সে মাস্টার্স ডিগ্রিটা পেয়েছেন। ইউনিভার্সিটিতে পড়ার সময় তিনি কিউইডি (QED) নামে একটা টেক্সট এডিটর ব্যবহার করতেন, যেটা ১৯৬৫ বা ১৯৬৬ সালের মধ্যে কোন এক সময়ে বিটিএস (এটা ওই বিটিএস না, এটা বার্কলি টাইমশেয়ারিং সিস্টেম) এর জন্য লেখা হয়েছিল1। বেল ল্যাবসে আসার পরে থমসন প্রথম যে কাজটা করেন তা হচ্ছে, ওখানকার এমআইটি কম্পাটিবল টাইম‑শেয়ারিং সিস্টেম-এর জন্য QED প্রোগ্রামটা লিখে ফেলেন। পরে তিনি মাল্টিক‍্স প্রকল্পের জন্য প্রোগ্রামটা আবার লিখেন। এই সময়ের মধ্যে তিনি টেক্সট এডিটরটায় কিছু নতুন সুবিধাও যোগ করেন, যেমন ফাইলের মধ্যে কোনো লাইন অনুসন্ধান, রেগুলার এক্সপ্রেশন দিয়ে লেখা প্রতিস্থাপন ইত্যাদি2

মাল্টিক‍্স প্রকল্পটা ছিল এমআইটি, জেনারেল ইলেক্ট্রিক, এবং বেল ল্যাবসের একটা যৌথ উদ্যোগ, আর এর উদ্দেশ্য ছিল একটা বাণিজ্যিক টাইম‑শেয়ারিং সিস্টেম তৈরি করা। কিন্তু বেল ল্যাবসের পরিচালক প্রতিষ্ঠান এটি&টি সিদ্ধান্ত নেয় যে মাল্টিক‍্সের সফলতার সম্ভাবনা ক্ষীণ, আর প্রকল্পটা থেকে সরে যায়। ফলে থমসন আর তার আরেক সহকর্মী, জনৈক ডেনিস রিচি, টাইম‑শেয়ারিং সিস্টেমের ইন্টারএক্টিভ কম্পিউটিং পরিবেশেটার অভাব বোধ করতে শুরু করেন। অভাবটা এতই প্রকট ছিল যে তারা নিজেদের জন্য ওরকম একটা সিস্টেম তৈরি করতে শুরু করে দেন, যেটা পরে ইউনিক্স নামে পরিচিতি পাবে3। ১৯৬৯ এর আগস্টে যখন তার স্ত্রী-সন্তান ক্যালিফোর্নিয়ায় ছুটি কাটাতে গিয়েছিল, ওই সময়ের মধ্যে থমসন নতুন অপারেটিং সিস্টেমটার মৌলিক অংশগুলি দাঁড় করিয়ে ফেলেন– অপারেটিং সিস্টেম, শেল, এডিটর, অ্যাসেম্বলার, প্রতিটার পিছনে এক সপ্তাহ করে সময় দিয়ে3

থমসন তার বানানো এডিটরটার নাম দেন এড (ed)। এটা QED এর ভিত্তিতে তৈরি, কিন্তু একদম সমতুল্য না। রেগুলার এক্সপ্রেশনের সমর্থন হ্রাস করা হয়, ফলে এড কেবল তুলনামূলকভাবে সরল রেগুলার এক্সপ্রেশন বুঝতে পারতো। QED তে একই সময় ভিন্নভিন্ন বাফারে একাধিক ফাইল সম্পাদনা করা যেত, কিন্তু এড কেবল একটা ফাইল নিয়ে কাজ করতে পারতো। QED এডিটিং কমান্ডঅলা বাফার এক্সিকিউট করতে পারতো; এড‑এ এরকম কোন সুবিধা ছিল না। ডেনিস রিচির মতে, QED এর জটিল রেগুলার এক্সপ্রেশনের সমর্থন হারানোটা খুব বড় কোন ক্ষতি ছিল না2

এড এখন পজিক্সের অংশ, তাই পজিক্স‑সমর্থিত যেকোন সিস্টেমেই এড পাওয়া যাবে। এটা নিয়ে নাড়াচাড়া করে দেখাটা কাজে লাগতে পারে, কারণ এডের বেশিরভাগ কমান্ডই ভিমেও রয়েছে। যেমন, টেক্সট ফাইলে লিখতে এডের মতই w কমান্ডটা লাগে, এডিটর বন্ধ করতে লাগে q কমান্ড। একই লাইনে একাধিক কমান্ড দেয়া যায়, তাই লেখা সেভ করা এবং একই সাথে এডিটর বন্ধ করার জন্য কমান্ডটা হচ্ছে wq। ভিম এর মত এড‑ও একটা মোডাল এডিটর। ইনপুট মোডে প্রবেশ করার জন্য প্রয়োজনবোধে insert (i), append (a) অথবা change (c) কমান্ডগুলো চালাতে হত। এড-এর থেকেই লেখা খুঁজে প্রতিস্থাপনের জন্য s/foo/bar/g এই সিনট্যাক্সটার জন্ম (s হচ্ছে প্রতিস্থাপন, substitution, এর কমান্ড)।

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

Ken_Thompson (sitting) and Dennis Ritchie at a PDP-11
ডেনিস রিচি (বামে) এবং কেন থমসন, একটা পিডিপি-১১ টার্মিনালে কর্মরত (উৎস: bell​-labs​.com)

ছবিটা ভাল করে লক্ষ্য করলেই দেখা যাবে যে তারা যে কম্পিউটারে কাজ করছেন, তার কোন মনিটর নেই, তার জায়গায় রয়েছে কাগজের পুরু রিম। ওই সময়ে কাগজই ছিল কম্পিউটারের স্ক্রিন!

এ কারণে এড‑এ কার্সর নাড়াচাড়া করা যায় না, সব লাইনের মধ্যে দেখে দেখে কোনো একটা লাইন এডিট করা যায় না, কারণ সেসব করতে গেলে, প্রতিটা পরিবর্তনের পর ফলাফল দেখানোর জন্য পুরো ফাইলটা বারবার প্রিন্ট করতে হত। স্ক্রিন ক্লিয়ার করার জন্যও কোন ব্যবস্থা ছিল না, কারণ স্ক্রিনটা তো একটা কাগজের পাতা, আউটপুট তো কালিতে প্রিন্ট হয়ে বের হয়েই এসছে, সেটা ক্লিয়ার বা স্ক্রল হবে কিভাবে? প্রয়োজনবোধে এড এক বা একাধিক লাইন প্রিন্ট করে দেখাতে পারতো (list (l) কমান্ড দিয়ে), কিন্তু বেশিরভাগ সময়ই যে টেক্সটের ওপর কাজ হচ্ছে সেটা চোখে না দেখেই সম্পাদনা করতে হত। তাই এড ব্যবহার করা, অনেকটা একটা অপরিচিত অন্ধকার বাড়িতে দূর্বল একটা টর্চলাইট দিয়ে ঘোরাঘুরি করার মত ছিল। একবারে খুব বেশি খুব বেশি আউটপুট দেখা যাচ্ছে না, তাই যেটুকু দেখা যাচ্ছে সেটাই মনে রাখার এবং বিভিন্ন কমান্ডের পর কি অবস্থা হচ্ছে, তা না দেখে বুঝতে পারার সর্বোচ্চ চেষ্টা করতে হত।

এইযে, এড‑এ কাজ করার একটু উদাহরণ দেখাচ্ছি। কমান্ডের পাশে “#” দিয়ে কমেন্ট আকারে কি করা হচ্ছে তাও বলছি, তবে সত্যি সত্যি এড‑এ কাজ করার সময় এভাবে কমেন্ট লিখলে এড তা বুঝতে পারবে না।

[~]$ ed
i                           # ইনপুট মোডে প্রবেশ
Hello world!

Isn't it a nice day?
.                           # ইনপুট শেষ
1,2l                        # লাইন নং ১ ও ২ প্রদর্শন
Hello world!$
$
2d                          # লাইন নং ২ ডিলিট
,l                          # পুরো বাফার প্রদর্শন
Hello world!$
Isn't it a nice day?$
s/nice/terrible/g           # পুরো বাফারে প্রতিস্থাপন
,l
Hello world!$
Isn't it a terrible day?$
w foo.txt                   # foo.txt ফাইলে লেখা
38                          # (কত বাইট লেখা হল)
q                           # কুইট, বন্ধ করা
[~]$ cat foo.txt
Hello world!
Isn't it a terrible day?
Code language: plaintext (plaintext)

বোঝাই যাচ্ছে, এড খুব বেশি কথা বলে না।

বিল জয়ের টেক্সট এডিটর

থমসন আর রিচি এড‑এ কাজ করতে পটু হলেও, অন্য অনেকের কাছেই এড কঠিন মনে হত, এবং প্রোগ্রামটা হয়ে ওঠে অনভ্যস্তদের প্রতি ইউনিক্সের অবহেলার একটা প্রতীক4। ১৯৭৫ সালে জর্জ কোলোরিস নামের এক লোক, লন্ডনের কুইন মেরি‘স কলেজে ইনস্টল করা ইউনিক্স সিস্টেমে কাজ করতে করতে এড এর একটা উন্নত সংস্করণ তৈরি করেন। ওই ইউনিক্স সিস্টেমে একটা ভিডিও মনিটর ছিল, আর কোলোরিস তার এডিটরকে এই মনিটরের সুবিধা নেয়ার মত করেই তৈরি করেছিলেন। তার এডিটর দিয়েও এক সময় একটা লাইনই এডিট করা যেত, তবে লাইনটা স্ক্রিনে দেখা যেত, কার্সর নাড়াচাড়া করা যেত, ওপরে নিচে স্ক্রল করা যেত। কোলোরিস তার এডিটরের নাম দেন এম, em – “Editor for Mortals”। এই নামের অনুপ্রেরণা হয়ত কেন থমসনের থেকেই পাওয়া। থমসন কুইন মেরি‘স কলেজে এসে কোলোরিসের প্রোগ্রামটা দেখে মোটেই উৎসাহ বোধ করেননি, বরং বলেছিলেন যে, একটা ফাইল এডিট করার সময় সেটা কি অবস্থা হচ্ছে তা মূহুর্তে মূহুর্তে দেখতে পারা তার কাছে খুব জরুরি নয়5

১৯৭৬ সালে জর্জ কোলোরিস ইউনিভার্সিটি অফ ক্যালিফোর্নিয়ার সিএস বিভাগে তার গ্রীষ্মকালীন সময়টা কাটাতে আসেন এবং সাথে এম এডিটরটাও নিয়ে আসেন। সময়টা ছিল এই ইউনিভার্সিটি থেকে কেন থমসনের বেল ল্যাবসে চলে যাবার ঠিক দশ বছর পর। বার্কলিতে কোলোরিসের সাথে জনৈক স্নাতক শিক্ষার্থী বিল জয়ের পরিচয় হয়। জয় তখন বার্কলি সফটওয়্যার ডিস্ট্রিবিউশন (বিএসডি) নিয়ে কাজ করছিলেন। কোলোরিস তার এম এডিটরটা জয়কে দেখান, এবং জয় এড এডিটরের সোর্স কোডের ভিত্তিতে এডের আরও একটা উন্নত সংস্করণ তৈরি করেন, এবং নাম দেন এক্স (ex), “extended ed”। ১৯৭৮‑এ বিএসডি ইউনিক্সের প্রথম প্রকাশিত সংস্করণে এক্স ১.১ ও অন্তর্ভূক্ত ছিল। এক্স প্রায় সবদিক দিয়ে এডের মতই ছিল, তবে এতে দুইটা নতুন মোড যুক্ত করা হয়েছিল: একটা ওপেন মোড, যেখানে এড-এর মত এক এক করে লাইন এডিট করা যেত, এবং একটা ভিজুয়াল মোড, যেখানে পুরো স্ক্রিনটার যেকোন জায়গায় এডিট করা যেত (বর্তমানে আমরা যেভাবে এডিটিং করতে অভ্যস্ত)।

LSI ADM-3A কম্পিউটারের কীবোর্ড (উৎস: vintagecomputer​.ca)

১৯৭৯ সালে বিএসডি এর দ্বিতীয় সংস্করণে vi নামের একটা প্রোগ্রাম যোগ করা হয়। এটা মূলত এক্স‑এর ভিজুয়াল মোড চালু করা বাদে তেমন কিছুই করতো না6। এই ভি তথা এক্স‑এর ভিজুয়াল মোড থেকেই বর্তমান ভিম‑এর বেশিরভাগ অনন্য বৈশিষ্ট্যগুলোর উৎপত্তি হয়। জয় যে ভিডিও টার্মিনালে কাজ করতেন এবং এক্স এডিটর লিখেছিলেন, সেটা ছিল লার‍্স‍সিগলার এডিএম-৩এ মডেলের, এর কীবোর্ডে কার্সর নিয়ন্ত্রক অ্যারো বোতামগুলি ছিল না। বরং অ্যারো চিহ্নগুলি h, j, k, l বোতামগুলির ওপর প্রিন্ট করা ছিল। এ কারণেই জয় এই বোতামগুলিকেই কার্সর নিয়ন্ত্রণের জন্য বাছাই করেছিলেন। এই কীবোর্ডে এসকেপ বোতামটাও ছিল হাতের কাছেই, বর্তমান কীবোর্ডের ট্যাব বোতামের অবস্থানে। এথেকেই বোঝা যায় যে বিভিন্ন মোড থেকে বের হবার মত বহূলব্যবহৃত কমান্ডটা কেন আজকার এসকেপের মত একটা নাগালের বাইরের বোতামে থাকে। ভিমে কমান্ড প্রবেশ করার জন্য কোলন (:) ব্যবহারের রীতিটাও ভি থেকেই পাওয়া। ভি কমান্ডের মাধ্যমে এক্স এডিটর চালু করার পর সাধারণ মোডে কমান্ড লেখার লাইনে প্রম্পট হিসাবে একটা : প্রিন্ট করতো। ভি-তে সেভ করে বের হওয়ার জন্য সেই ক্লাসিক :wq কমান্ডটা টাইপ করতে হত। “ইয়াঙ্ক” নামে কপি করা, “পুট” নামে পেস্ট করা, “মার্ক”, বিভিন্ন কনফিগারেশনের জন্য set কমান্ড, এরকম অনেক কিছুই ভি থেকেই আসছে। ভিমে টেক্সট সম্পাদনার মৌলিক ধারণাগুলোর সিংহভাগই ভি থেকে সরাসরি পাওয়া।

বিএসডি-তে টেক্সট এডিটর বলতে এড এবং ভি ছাড়া আর কিছুই ছিল না। ওই সময় ইম্যাক্সের কিনতে শত শত ডলার খরচ হত (এটা গ্নু ইম্যাক্সের জন্মের আগের কথা), তাই ভি অত্যন্ত জনপ্রিয় হয়ে ওঠে। তবে এটা ছিল এড এর সরাসরি বংশধর, তার মানে এর ওপর এটি&টি এর লাইসেন্স আরোপিত ছিল। ওইসময় বেশ কয়েকজন ভি এর মুক্তসোর্স বিকল্প লেখার উদ্যোগ নেন। ১৯৮৭ সালে আসে স্টিভি (STEVIE: ST Editor for VI Enthusiasts), ১৯৯০ সালে এলভিস (Elvis), ১৯৯৪ সালে এনভি (nvi)। এইসমস্ত বিভিন্ন প্রকল্পে বিভিন্ন সুযোগ সুবিধা যুক্ত করা হয়, যেমন সিনট্যাক্স হাইলাইটিং, একই সময়ে একাধিক ফাইল দেখার সুবিধা, ইত্যাদি। বিশেষত এলভিস এডিটরের বেশকিছু সুবিধা ভিমে প্রবেশ করে, কারণ এলভিস ছিল বেশি জনপ্রিয়, আর এলভিসের ব্যবহারকারীরাও ভিমে এসব সুবিধা যুক্ত করার জন্য চেষ্টা চালাচ্ছিল7

ব্রাম মুলেনার এর ভিম

ভিম (Vim) নামটার অর্থ বর্তমানে “Vi IMproved” হলেও, প্রথমদিকে এর অর্থ ছিল “Vi IMitation”। অন্যান্য ভি ক্লোনের মত ভিমেরও শুরু হয়েছিল ভি এর একটা মুক্তসোর্স বিকল্প হিসাবে, এবং যেসব প্লাটফর্মে ভি অনুপস্থিত, সেখানে ভি এর সুবিধাগুলো আনার উদ্দেশ্যে। ব্রাম মুলেনার নেদারল্যান্ডের ভেনলোতে একটা ফটোকপিয়ার প্রতিষ্ঠানে সফটওয়্যার ইঞ্জিনিয়ার হিসাবে কাজ করার সময় একটা অ্যামিগা ২০০০ কম্পিউটার কিনেছিলেন এবং সেটায় ভি চালানোর জন্য মুখিয়ে ছিলেন। তিনি তার বিশ্ববিদ্যালয়ে জীবনে ইউনিক্স সিস্টেমে ভি চালাতে চালাতে অভ্যস্ত হয়ে গিয়েছিলেন, বলতে গেলে তার হাতে ভি মুখস্ত হয়ে গিয়েছিল8। তবে অ্যামিগার জন্য মুলেনারের পছন্দনীয় ভালো কোন ভি ক্লোন ছিল না। তাই ১৯৮৮ সালে স্টিভি-এর সোর্স কোডকে ভিত্তি করে মূলনার ভিম তৈরি করা শুরু করেন।

স্টিভি মুলেনারের হাতে আসার গল্পটাও মজাদার। সেসময় অ্যামিগার জন্য ফ্রেডফিশ ডিস্ক নামে সফটওয়্যার সংগ্রহ পাওয়া যেত। ফ্রেড ফিশ নামে এক আমেরিকান প্রোগ্রামার অ্যামিগার জন্য লিখিত সবচে ভালো কিছু মুক্তসোর্স প্রোগ্রাম বাছাই করে প্রতি মাসে একটা ফ্লপি ডিস্ক তৈরি করতেন, এবং যে কেউ চাইলেই ফ্লপিটার একটা কপি তাকে মেইলে পাঠিয়ে দিতেন (ইমেইলে না, ডাকযোগে)। এজন্য তাকে কেবল ডাকযোগে পাঠানোর খরচটা দিলেই হত। মুলেনারও নিয়মিত ফ্রেড ফিশ ডিস্ক সংগ্রহ করতেন। এইসব ডিস্কে স্টিভি এর বিভিন্ন সংস্করণ ছিল। মুলেনার স্টিভি এর যে সংস্করণকে ভিত্তি করে ভিম লেখা শুরু করেছিলেন, সেটা ২৫৬নং ফ্রেড ফিশ ডিস্ক থেকে নেয়া9

স্টিভিতে ভি এর বেশ কিছু কমান্ড অনুপস্থিত ছিল10। তাই ভিম‑এর প্রথম প্রকাশের জন্য মুলেনারের প্রধান লক্ষ্য ছিল যতটা সম্ভব ভি কমান্ডের সমর্থন আনা। সেসময় কেউ একজন ভি ম্যাক্রো দিয়ে খুব জটিল একটা প্রোগ্রাম তৈরি করেছিল, যেটা ভালভাবে ভি-সমর্থিত কোন এডিটরে চালালে একটা র‍্যান্ডম গোলকধাঁধার সমাধান করতে পারতো11। মুলেনার ভিম‑এ এই প্রোগ্রাম সফলভাবে চালাতে সক্ষম হয়েছিলেন। ১৯৯১ সালে ভিম‑এর প্রথম সংস্করণ মুক্তি পায়, এবং ফ্রেড ফিশ ডিস্ক নং৫৯১‑তে “ভি ইমিটেশন” নামে প্রকাশিত হয়12। মুলেনার ভিমে কিছু এক্সট্রা সুবিধা যুক্ত করেছিলেন, যেমন উন্নত আনডু, কম্পাইলার এরর সমাধানের জন্য একটা “কুইকফিক্স” মোড, ইত্যাদি। ফলে ভিম আসলে ভি এর নকল না, বরং ভি এর একটা উন্নত সংস্করণে পরিণত হয়েছিল। তবু ১৯৯৩ সালে ভিম ২.০ প্রকাশের আগ পর্যন্ত এটা ভি ইমিটেশন হিসাবেই প্রচলিত ছিল। 

শুরু থেকেই ইন্টারনেটে অনেকের সহযোগিতার পাশাপাশি মুলেনার ভিমে নিয়মিত নতুন নতুন সুযোগসুবিধা যোগ করতেন। ভিম ২.০ তে স্ক্রিনের চাইতে প্রশস্ত লাইন ভেঙে দেখানো এবং আড়াআড়িভাবে স্ক্রল করার সুবিধা যুক্ত করা হয়েছিল। ভিম ৩.০ তে একই সময় একাধিক উইন্ডো দেখার সুযোগ পাওয়া যায়, যেটা এনভি ক্লোন থেকে অনুপ্রাণিত। এইসময় থেকে ভিম প্রতিটা বাফার একটা সোয়াপ ফাইলে সেভ করতে শুরু করে, যার সাহায্যে হঠাৎ ভিম বা সিস্টেম ক্র্যাশ করলেও টেক্সটের এডিটগুলো সংরক্ষণ করার সুযোগ তৈরি হয়। ৫.০ সংস্করণে সিনট্যাক্স হাইলাইটিং এর পাশাপাশি ভিমস্ক্রিপ্টের প্রথম প্রকাশ হয়। এই সময় থেকে ভিমের জনপ্রিয়তা উত্তরোত্তর বাড়তেই থাকে। এটা এমএস-ডস, উইন্ডোজ, ম্যাক‑এ উপস্থিতি পেতে শুরু করে। এমনকি ইউনিক্সেও ভিম উপস্থিত হয়, যেখানে এটা এক অর্থে তার আদিপুরুষ ভি এর সাথেই পাল্লা দিতে থাকে।

২০০৬ সালে লিনাক্স জার্নাল‑এর পাঠকদের ভোটে ভিম সবচেয়ে জনপ্রিয় টেক্সট এডিটরের স্বীকৃতি পায়13। সাম্প্রতিক কালে, ২০১৮ সালের স্ট্যাকওভারফ্লো ডেভলপার সার্ভে অনুযায়ী ভিম হচ্ছে সবচেয়ে জনপ্রিয় টার্মিনাল‑ভিত্তিক টেক্সট এডিটর, এবং সার্ভেতে অংশ নেয়া সমস্ত সফটওয়্যার ডেভলপারদের ২৫.৮% ও সিসঅ্যাডমিন/ডেভঅপস ইঞ্জিনিয়ারদের ৪০% লোক ভিম এর ব্যবহারকারী14

১৯৮০-৯০ দশকে প্রোগ্রামাদের মধ্যে “এডিটর যুদ্ধ” চলতো — লোকজন ভি/ভিম এবং ইম্যাক্সের মধ্যে কোনটা বেশি ভালো তা নিয়ে তুমুল তর্ক করতো। ইম্যাক্সের এখনও প্রচুর জনপ্রিয়তা রয়েছে, তবে তা ভিমের সমান না, এবং অনেকেই মনে করেন যে এডিটর যুদ্ধ শেষ হয়ে গেছে, এবং ভিমদল জয়ী হয়েছে15। ওই স্ট্যাকওভারফ্লো সার্ভেটা থেকেও এই মতের পক্ষে প্রমাণ পাওয়া যায়: সার্ভেতে মাত্র ৪.১% ছিলেন ইম্যাক্স ব্যবহারকারী।


ভিম এত সফল হল কি করে? প্রধান কারণটা সহজবোধ্য: ভিমের সুযোগসুবিধা অনেকেই পছন্দ করে। কিন্তু আমার মতে ভিমের লম্বা ইতিহাস যাচাই করে দেখা যায় যে শুধু সুযোগসুবিধা ছাড়াও ভিমের আরও কিছু সৌকর্য আছে। ভিমের জন্ম মাত্র ১৯৮৮ তে, মুলেনার যখন এর কাজ শুরু করেন। কিন্তু ভিমের অনুপ্রেরণা, আমাদের বর্ণিত সেই wq text editor, এর মধ্যে নিহিত ছিল ইউনিক্সের আদর্শ টেক্সট এডিটরের কি কি বৈশিষ্ট্য থাকা উচিত। এই এডিটরের বংশধারা ইউনিক্সের শুরুর সাথেই উৎপন্ন হয়েছিল। বিভিন্ন সময়ে এই আদর্শ এডিটরের কার্যকর্মে বিভিন্ন পরিবর্তন এসেছে। তবে বিল জয় এবং মুলেনার উভয়েই ব্যাকওয়ার্ড কম্পাটিবিলিটিকে (অর্থাৎ পুরোনো সংস্করণের সমর্থন রাখা) গুরুত্ব দিয়েছেন, ফলে ভাল ভাল বৈশিষ্ট্যগুলো সময়ে সাথে সাথে হারিয়ে যায়নি। একারণে বলা যায়, এই wq text editor হচ্ছে অন্যতম দীর্ঘজীবি এবং সফলতম একটা মুক্তসোর্স সফটওয়্যার প্রকল্প, এবং কম্পিউটিং ইতিহাসের উজ্জ্বলতম কিছু ব্যক্তিত্বের অবদান পেয়েছে। আর ভিম এই আদর্শ টেক্সট এডিটরের ধারণাটাই বহন করে চলছে।


  1. Butler Lampson, “Systems,” http://​bwlampson​.site/​S​y​s​t​e​m​s​.​htm
  2. Dennis Ritchie, “An Incomplete History of the QED Editor,” accessed August 5, 2018, https://​www​.bell​-labs​.com/​u​s​r​/​d​m​r​/​w​w​w​/​q​e​d​.​h​tml
  3. Peter Salus, “The Daemon, the GNU, and the Penguin,” Groklaw, April 14, 2005, accessed August 5, 2018, http://​www​.groklaw​.net/​a​r​t​i​c​l​e​.​p​h​p​?​s​t​o​r​y​=​2​0​0​5​0​4​1​4​2​1​5​6​4​6​742
  4. Donald Norman, “The Truth about Unix: The User Interface Is Horrid,” Datamation, accessed August 5, 2018, http://​www​.ceri​.memphis​.edu/​p​e​o​p​l​e​/​s​m​a​l​l​e​y​/​E​S​C​I​7​2​0​5​_​m​i​s​c​_​f​i​l​e​s​/​T​h​e​_​t​r​u​t​h​_​a​b​o​u​t​_​U​n​i​x​_​c​l​e​a​n​e​d​.​pdf
  5. George Coulouris, “George Coulouris: A Bit of History,” George Coulouris’ Homepage, September 1998, accessed August 5, 2018, http://www.eecs.qmul.ac.uk/~gc/history/index.html
  6. “Second Berkeley Software Distribution Manual,” Roguelife, accessed August 5, 2018, http://roguelife.org/~fujita/COOKIES/HISTORY/2BSD/vi.u.html
  7. Sven Guckes, “VIM Wishlist,” Vmunix, May 15, 1995, accessed August 5, 2018, https://web.archive.org/web/20080520075925/http://www.vmunix.com/vim/wish.html
  8. Bram Moolenaar, “Vim 25” (lecture, Zurich, November 2, 2016), December 13, 2016, accessed August 5, 2018, https://​www​.youtube​.com/​w​a​t​c​h​?​v​=​a​y​c​_​q​p​B​-​93o 4m58s
  9. Bram Moolenaar, “Vim 25” (lecture, Zurich, November 2, 2016), December 13, 2016, accessed August 5, 2018, https://​www​.youtube​.com/​w​a​t​c​h​?​v​=​a​y​c​_​q​p​B​-​93o 6m15s
  10. Bram Moolenaar, “Vim 25” (lecture, Zurich, November 2, 2016), December 13, 2016, accessed August 5, 2018, https://​www​.youtube​.com/​w​a​t​c​h​?​v​=​a​y​c​_​q​p​B​-​93o 7m6s
  11. “After studying these macros, anyone who cannot write an emacs emulator in vi macros should just curl up and :q!”
    - ম্যাক্রো লেখকের ইমেইল থেকে নেয়া
  12. “Fish Disks 1 — 1120,” Amiga Stuff, accessed August 5, 2018, http://​www​.amiga​-stuff​.com/​p​d​/​f​i​s​h​.​h​tml
  13. “2005 Linux Journal Reader’s Choice Awards,” Linux Journal, September 28, 2005, accessed August 5, 2018, https://​www​.linuxjournal​.com/​a​r​t​i​c​l​e​/​8​5​2​0​#​N​0​x​8​5​0​c​d​8​0​.​0​x​8​7​9​8​3bc
  14. “Stack Overflow Developer Survey 2018,” Stack Overflow, accessed August 5, 2018, https://​insights​.stackoverflow​.com/​s​u​r​v​e​y​/​2​0​1​8​/​#​d​e​v​e​l​o​p​m​e​n​t​-​e​n​v​i​r​o​n​m​e​n​t​s​-​a​n​d​-​t​o​ols
  15. Bruce Byfield, “The End of the Editor Wars,” Linux Magazine, May 11, 2015, accessed August 5, 2018, http://​www​.linux​-magazine​.com/​O​n​l​i​n​e​/​B​l​o​g​s​/​O​f​f​-​t​h​e​-​B​e​a​t​-​B​r​u​c​e​-​B​y​f​i​e​l​d​-​s​-​B​l​o​g​/​T​h​e​-​E​n​d​-​o​f​-​t​h​e​-​E​d​i​t​o​r​-​W​ars

আগের লেখা

টিমাক্সের মক‍্শো: ২

মন্তব্য করুন

মন্তব্য করুন

আপনার ই-মেইল এ্যাড্রেস প্রকাশিত হবে না। * চিহ্নিত বিষয়গুলো আবশ্যক।