المحرر vi

تقييم كلي: 7 (أصوات:2)
نبذة تاريخية :
محرر كلاسيكي جدا من أيام اليونكس أصلا وأول تصميم ليه كان في الBSD ... جامعة بيركيلي ... حقيقي شئ من التراث بس على الرغم من كده هو منافس قوي جدا لحاجة اسمها emacs ... طبعا مفروض نتكلم عن emacs بس للأسف مشروع emacs ده مشروع كبير جدا وفي ناس كتيرة بتعتبره مشروع IDE=Integrated Development Environment مش محررEditor ... وبالتالي احنا في مرحلة بينية نوعا ما وكبداية من الضروري جدا الحديث أو حتى المقدمة عن هذا المحرر ... وطبعا نتمنى حد يبدأ يتكلم عن المحرر emacs بجد دية تبقى حاجة فوق توقعاتنا بس اﻷمل في ربنا كبير بإذن الله

نرجع تاني لتاريخ الvi ... طبعا محررات اليونكس عامة كلها ليه تاريخ متعمق بجذوره في أواصل البوردة بتاعة الجهاز بتاعك .. بس عامة مش هنقدر نزود في الموضوع ده دلوقتي ... مفروض اللي يهمنا هو كيفية استخدامه ... ولمزيد من التفاصيل اليك رابط الويكيبيديا

أهمية الvi :
هو اولا بينطق vee-eye ... عشان بس مفيش حد يتريق عليك في حاجة ملهاش لازمة .. وانت يمكن تكون عارف اكتر منه
ثانيا الvi محرر كل بيات اليونكس ... يعني مفيش حاجة اسمها أنا ملقتش الvi عندي على التوزيعة بتاعتي ... يعني ممكن ميكونش عندك توزيعة ويكون عندك الvi ... طبعا ده تهويل ... بس المقصود منه التواجدية المطلقة
ثالثا: بالنسبة لمدير النظام Administrator طبعا الvi ضرورة قصوى ... لنه أوقات كتيرة جدا هيكون واقع في مشكلة معينة ومحتاج يحرر الملفات .. فاحتمال كبير جدا إن الواجهة الرسومية ذات نفسها مش شغالة ... واحتمال أفظع إنه مش عارف يدخل على الحساب الخاص بيه الي عليه كل برامجه ... بس هيكون معاه سطر أوامر حينها فقط تأكد أنه سيحرر ملفاته بالvi
ملحوظة:طبعا لا يوجد مدير نظام Administrator يعتمد على تطبيقات الواجهة الرسومية ولا يعرف غيرها فهذا بكل بساطة ليس بمدير نظام

طبعا سر تواجده هو انه خفيف جدا بيدي الغرض بطريقة غير معقولة .. وفيه وظائف متقدمة جدا موجودة في برامج كبيرة جدا ومعقدة ... غير إنه مرن جدا في تقابل وظائف وخصائص أخرى ممكن أن تنبني عليه من خلال تطبيقات وبرامج أخري

ٍرأيك أنت فيه :
محرر كئيب ومزعج ... ولا يطاق وبيحسسك بشلل مطلق في التعامل وقول ما بدالك

الرد :
طبعا بداية كده كلامك ده كله صح صح جبنة بريزدو ... ومحدش يقدر يقول غير كده ... ده كبداية .. بس السبب في ده هو تعودك على عالم المحررات المبنية على الواجهة الرسومية اللي بيكون فيها ماوس وقوايم وحاجات لذيذة كده كتير محدش يقدر ينكرها
بس عامة مفيش غير المحرر ده اللي موحد على جميع بيئات اليونكس .. أول تصبيرة
بمجرد لما هتتعود عليه وتتعرف على خصائصه وامكانياته لازم هتقدر المحرر ده كده كده ... تاني تصبيرة

اﻷستخدام :
بداية مستنسخات الvi كثيرة جدا ومتعددة لكن أشهرها هو الVI Improved VIM ... وفي الغالب هتلاقى توزيعتك عاملة رابط رمزي من كلمة vi لكلمة vim .. كتطبيق معتمد ﻷغلب توزيعات اللينكس وبيوفر نظرية تصميم وعمل الvi التاريخي


طبعا عشان منعملش من البحر طحينة محتاجين أولا ندعم الوظائف اﻷساسية واﻷولية ﻷي محرر :


أولا: نبدأ الvi :
باﻷمر ده ... لو الملف موجود في المجلد الحالى هيبدأ بفتحه ومن ثم تحريره ... ولو مكنش فيه ملف باﻷسم ده هينشأه من جديد

andalusy@linux-box: ~$ vi test.txt
---------------------Starting then you see something like that----------------------
~
~
~
~
~
~
~
~
~
~
"test" [New File] 0,0-1 All

والحرف ~ يرمز إلى EOF نهاية الملف ...

ثانيا :أدخال البيانات والتنقل ما بين اﻷسطر
ممكن نتفق على حاجة جديدة كده احنا مش متعودين عليها من أساسه .. في حاجة جديدة لازم نتعلمها مفادها إن تصنيف محرر زي الvi تصنيفه يقع تحت مسمى المحررات الوضعية Modal Editor والمقصود من كده إنه ليه اكتر من وضع في التعامل معاه
هما وضعين ... وضع تحرير Edit Mode ووضع تنفيذ أوامر Command Mode.. وفيه اتفاق تاني بيقول انهم تلات أوضاع بعدم أغفال وضع التنفيذ ex Mode
مؤقتا انسى الوضع التالت ده ... وخليك معانا في الوضعين بس
أول لما بتفتح الvi بتلاقى نفسك داخل وضع تنفيذ اﻷوامر ... لو عايز تنقل لوضع التحرير محتاجينك تدوس حرف i ختصارا لكلمة insert وهتلاقيها اتكتبت تحت

طبعا وانت داخل الوضع ده --INSERT--- خلاص مفيش مشاكل... ينفع تدخل الحروف الي انت عايزها أو حتى تتحرك باﻷسهم وهكذا دواليك ...

طبعا الفرق ما بين الوضعين هو الحرف i والمفتاح التاني هو Esc مفتاح الهروب كما يسمونه .. وبالتالي للتبديل ما بين الوضعين أو معرفة أي الوضعين أنت عليهما اﻷن اضغط مفتاح الهروب أو انظر في السطر اﻷخير لمحاولة استنتناج ذلك

طبعا ضغطت مفتاح الهروب دلوقتي صح ؟ فيه حرفين تانين للأدخال معتمدين على الموقع الحالى للمؤشر على الصفحة التي أمامك من المحرر
الحرف a بمعني append الحاق بمكان المؤشر الحالى ما تشاء من البيانات
الحرف o بمعني open a line بتفتح سطر جديد تحت المؤشر الحالى وادخال بيانات

ثالثا : خيارات الحذف والتراجع
من خلال وضع تنفيذ اﻷوامر ... هتستخدم حرف x بمثابة مفتاح Delete
أيضا من خلال وضع تنفيذ اﻷوامر ... هتستخدم الحرفين dd لتمسح سطر بأكلمه
ومن هنا هيبدا السحر ﻷنك ينفع تعين رقم قبل dd والvi هيمسح عدد السطور دول بالظبط
يعني مثلا 5dd معناها أمسح خمسة اسطر من مكان المؤشر الحالى
ويمكنك مسح كلمة معينة من بعد المؤشر بالحرفين dw ... طبعا واضح أيه هو تعريف الكلمة ... هو مجموعة من الحروف أولها مسافة وتنتهي بمسافة

وخيارات التراجع عن أي حذف من دول هو حرف p أو P ... والصغيرة ﻷرجاع كل ما حذف قبل السطر الحالى ... والكبيرة فيما بعد السطر الحالى

وايضا حرف u ... بصنع نفس الوظيفة ... يتراجع عما حذف .. إذا ما الفرق ما بين اﻷثنين ... فاﻷول يتراجع والتاني يتراجع ؟ منعمل vi عربي احسن باسم العروبة واﻷسلام ؟

يا سيدي صبرك عليا وبلاش كلام أغاني ...... الp بتعمل وظيفة محددة انها ترجع الحروف اللي اتحذفت من مكان احتياطي هي بتقرا منه undo Buffer ...

ياريت تساعدني بترجمة لكلمة Buffer عشان الواحد يعرف ناس كتيرة بينطقوا الكلمة دية من غير ميكونوا عارفين معناها أصلا... ولو عايزين نعرفها في اطار عام ...هي مكان للتخزين عند حالة فرق كبير ما بين معدل الداخل إلى معدل الخارج ... فمثلا لو كان برنامج وجايله داخل كتير -- واحد مش عايز يشيل ايده من على لوحة المفاتيح --- هيحاول يلاحق عليه ازاي وهو لسه مشغل تطبيق تاني ... مش هيقدر فهيخزن الحاجات الداخلة داية في Buffer وبعدين يحاول يسترجعها ... لو كان المثال دايرة رقمية محتاجة تتطلع خارج معين بس جايلها داخل كتير ... هنيجي ما بين الدايرة وما بين الداخل ونحط دايرة Buffer تساعد الدايرة في انها تلاحق على الداخل الكتير ده....وبكده ممكن يختلف تصميم الBuffer من حالة لحالة اذا كان هيكون ملف مؤقت ولا حتى رامات ولا حتى دايرة الكترونية منفصلة تماما


لكن بالنسبة لخيار الu فده بيتراجع عن آخر حدث تم أي كان الحدث ... مسح أم تعدبل أم اضافة


رابعا :
خامسا :
................
ليضاف ذلك على التوالي ....إن شاء الله



أخيرا : خيارات الحفظ والخروج :

بعد لما تكون دخلت وضعية تنفيذ اﻷوامر ... ممكن دلوقتي نضغط : وبكده نكون في الوضعية اللي اتكلمنا عليها في اﻷول وقلنا عليها ex Mode ودية بتسمح بتنفيذ اﻷوامر عامة بمفهومها التنفيذي ... يعني ممكن تشغل أوامر من القشرة Shell

:w بكده يمكنك حفظ جميع التغيرات التي أضيفت
wq: الحفظ ومن ثم الخروج ونفس الوطيفة مع ZZ: في حالة اضافة تعديلات جديدة
!q: الخروج مع تأكيد عدم حفظ التغيرات

مصادر :

$ vimtutor
$ man vi
$ info vim