3.3 محررات النصوص التقليدية | كتاب لينكس الشامل | >> |
المقصود بمحررات النصوص التقليدية تلك التي تعتبر جزء من تقاليد لينكس منذ بداياته، وهي محررات قوية جداً وتبدو بعيدة جداً عن البهرجة والجمال ومع ذلك فهي محببة ومنتشرة فما الذي يجعل محبيها يفضلونها على المحررات العادية.
لأن معظم ملفات الإعداد هي ملفات نصية ولأن محررات النصوص في نظام لينكس تغني المبرمجين عن IDE بيئة التطوير المتكامية سأتحدث عن بعض محررات النصوص التقليدية التي يمكنها أن تعمل بدون الشاشة الرسومية و ربما تتسائل لماذا أريدها طالما لدي محررات نصوص مثل katoob و gedit و kate و غيرها تحتوي على الكثير من المزايا من التدقيق الإملائي إلى تلوين النص بحسب نوعه (مفيدة في لغات البرمجة) والفكرة أن من وراء هذا القسم أن الشاشة الرسومية قد لا تتوفر دائماً مثلاً عند إصلاح النظام أو تغير الإعدادات أو حتى إذا كان الجهاز خادم صامت Server ولا تريد أن تشغل وقته الثمين برسم أيقونات جميلة ، ولتتعلم أدوات يونكس (إنه شيء تضعه في CV سيرتك العملية ) ولأن هناك الكثير من البرامج تعمل بنفس الأسلوب والأزرار الساخنة سنتحدث عن Vi و VIM و emacs و nano وإذا كنت في منتدى لينكس لا تسألهم أيها يفضلون لأنك بذلك تشعل حرباً. ولن أتحدث عن ed وهو محرر نصوص صغير جداً وبلا معالم يعمل من خلال أوامر.
يعتبر محرر النصوص mcedit محرر سهل الإستخدام ويمكنه العمل من الطور النصي لهذا تأكد من تركيبه إذا لم تحترف المحررات الأخرى - اضغط F9 للحصول على قائمة.
إذا كنت ممن عمل على WordStar أو Borland Turbo C فإنك قد تحب تجريب محرر joe.
أول محرر نصوص بشاشة كاملة في التاريخ.
يوضع غالباً على بعض أقراص الإنقاذ والأنظمة محدودة المساحة.
في الغالب يكون vi عبارة عن رابط إلى المحرر المطور VIM
وقد تجد نسخة تقليدية (دون المزايا الجديدة) منه في عدة حزم مثل nvi.
وهو يبدو للوهلة الأولى طلسمي المعالم ولكن مفتاح ذلك هو أنه يعمل في عدة أطوار
الأول يتلقى منك الأوامر (الطور العادي) والآخر يحرر النص
(طور الإضافة) للتحول إلى طور الأوامر اضغط ESC وللتحول إلى طور التحرير/الإدخال
اضغط i
الآن حرر النص كما تريد
للخروج عليك أولاً الضغط على ESC للتحول إلى الأوامر ثم أمر الخروج :q
أو للحفظ ثم الخروج :wq
للخروج دون حفظ :q!
ثم
[ENTER].
،للبحث عن كلمة اضغط ESC ثم / ثم أدخل الكلمة.
لتخزين الملف :w
ثم [ENTER]
ويمكنك تحديد الاسم
:w FILENAME
ثم [ENTER]
بإمكانك فتح ملف آخر ب :e FILENAME
ثم [ENTER]
وبإمكاك التنقل بين الملفات المفتوحة ب
:prev
و :next
متبوعة ب [ENTER]
بإمكانك عرض أكثر من ملف معاً بفصل الشاشة ب
:split
ثم [ENTER]
وبإمكانك التنقل بينهما ب
CTRL+w j
و
CTRL+w k
تابع معنا VIM
حتى تتعلم VIM شغل نسختين من gvim
ثم اضغط في إحداهما على F1
سيظهر ملف
المساعدة الآن انقر نقرة مزدوجة على أحد المواضيع (الملفات الفرعية)
أو تحرك بالأسهم ثم اضغط CTRL+']'
للدخول إلى الملف أو يمكنك استعمال القوائم.
ثم طبّق ما هو مكتوب في النسخة الأخرى لتتعلم VIM لوحدك.
كما في Vi تكون في البداية في الطور العادي normal وهو طور العمليات أو الأوامر
وفيه تتحرك بالأسهم وغيرها لتحدد المكان الذي تريد
تنفيذ العملية به. ولأننا لم تعلم أياً منها لنتقل إلى طور آخر.
اضغط i للإنتقال إلى طور الإدخال أو الإضافة insertion mode
وفي هذا الطور يكون VIM كأي محرر نصوص عادي تتحرك بالأسهم وتطبع
النص بلوحة المفاتيح، من الميّزات المفيدة جداً
الإكمال التلقائي للنص مثلاً إذ كنت كتبت كلمة internationalization
ثم في مكان ما لاحقاً أردت أن تكتبها اكتب جزء منها
مثلاً inter ثم اضغط CTRL+X
للدخول في طور الإكمال التلقائي ثم
CTRL+P
عدة مرات حتى تحص على الكلمة المطلوبة
(في حال كان هناك أكثر من احتمال)
أما إذا كان النص الذي تكتبه قبل المكان الموجود
فيه أول ظهور للكلمة استعمل CTRL+N
التي تبحث في مكان لاحق للموضع الحالي. أما إذا كنت
تكتب اسم ملف فيمكنك الإكتفاء بكتابة جزء منه وبعد الضغط على CTRL+X
ثم اضغط CTRL+F
فيكمل الجزء الباقي فإذا كان هناك أكثر من احتمال
يمكنك التنقل بينها ب CTRL+P
و CTRL+N
،
مما سيوفر عليك الكثير من العناء. وهناك CTRL+X
ثم CTRL+K
التي تكمل النص بناء على قاموس تعده أنت بشكل مسبق.
لأجل التجربة اكتب النص التالي
Hello, world! I using VIM. It's cool. Look this is the 1st statment. And this is the 2nd one. And there is more. This is the second paragraph.
ESC
للعودة للطور العادي
أي طور العمليات الآن يمكنك تجربة العمليات التالية
التي تستخدم لتحريك المؤشر:
k | سطر للأعلى | j | سطر للأسفل | l | الحرف اللاحق | h | الحرف السابق |
---|
0 | الذهاب لبداية السطر | ^ | الذهاب لأول حرف في السطر | $ | الذهاب لنهاية السطر | ||
---|---|---|---|---|---|---|---|
w | الكلمة التالية | e | نهاية الكلمة التالية | b | الكلمة السابقة | ||
( | الجملة التالية | ) | الجملة السابقة | { | الفقرة التالية | } | الفقرة السابقة |
k (up line) w/b word forward/backward /\ e end of word (prev letter)h <- -> l(next letter) 0/^/$ 1st/1st-nonblank/end of line \/ '(' ')' prev/next statment j (down line) '{' '}' prev/next paragraph
3w
تعني تحرك 3 كلمات للأمام. وهكذا للعمليات التي تليها.
لنأخذ المزيد من العمليات مثلاً x
تحذف الحرف تحت المؤشر
بينما d
مع عملية تحريك تحذف
ما بين الموقع الحالي والموقع الذي يصله المؤشر بعد
العملية مثلاً ضع المؤشر على السطر الثالث قبل حرف A من أول And في الجملة الثانية
ثم اكتب d(
لتختفي الجملة كاملة ويصبح السطر
And this is the 2nd one. And
d(
ثم تعود لوضع
الإدخال وتكتب البديل.
ولأنك غالباً تحتاج لوضع كلمة مكان ما حذفت يوفر VIM
العملية c (تعني change) التي تقوم بما تقوم به d إلا أنها تدخل في طور
الإضافة بعد القيام بالحذف لهذا لو تراجعنا
عن آخر عملية وكتبنا مكانها c(foobar [ESC]
سيصبح السطر
foobar And this is the 2nd one. And
ppp
فإن الكلمة المحذوفة تعود مكررة 3 مرات.
أما لنسخ جزء من النص استعمل y التي تعمل كما d و c ولكن دون
حذفه أي أنها تحتفظ بالجزء الموجود بين الموقع الحالي للمؤشر
والموقع الذي ترسله إليه العملية التالية لها مثلاً y3w
تنسخ الكلمات الثلاث التالية ولوضعها في أي مكان
آخر قم بتحريك المؤشر إليه ثم اضغط p.
يمكنك تكرار آخر تغيير بعملية النقطة .
هذه العملية تكرر آخر تغيير في الموقع الحالي
وهي لا تحسب عمليات الحركة التي لا تغيّر. مثلاً
إذا وضعت المؤشر عند أول Hello
cwWelcome[ESC]
التي تعني غيّر الكلمة الحالية إلى Welcome
ثم حركت المؤشر إلى بداية world
وذلك بالضغط
على w أو بالأسهم ثم ضغطت على النقطة .
فإنها هي الأخرى ستصبح Welcome
.
يمكنك تخزين 26 فعل معين (مجموعة من العمليات) لتكون اختصاراً macro
وذلك بتسجيلها وإعطائها اسماً من أحد الحروف الإنجليزية ال26.
للبدء بالتسجيل اضغط [ESC]
للدخول في الطور العادي
ثم اضغط q
ثم حرف ليكون اسم الاختصار ثم ابدأ بكتابة الأوامر
ثم q
أخرى للتوقف عن التسجيل ولتطبيق ما سجلته
(ربما في مكان آخر) اضغط في الطور العادي@
واسم الاختصار
مثلاً لتسجيل اختصار باسم a يقوم
بتغيير الكلمة الثالثة من السطر الحالي لتصبح Hello
اكتب [ESC]qa02wcwHello[ESC]q
الآن إذهب إلى أي سطر آخر واكتب @a
يمكن الإنتقال إلى أول حدوث لحرف معين باستعمال
f أو لبحث للخلف ب F متبوعتان بالحرف المطلوب
ويمكن تكرار هذا البحث بالفاصلة المنقوطة ;
للبحث المتطور يوفر VIM ميزة التعرف على التعابير العادية
Regular Expressions (للإختصار RE) وهي طريقة قوية للبحث تحتوي على رموز تمثل
معنى غير معناها الحقيقي مثلاً |
التي تعني أو
انظر فصل "العودة لسطر الأوامر".
فإذا كنت تبحث عن بريد email لشخص يكون هو نفسه الموقع مثل
ahmad@ahmad.com
فإن ال RE هي \([A-Za-z0-9]\+\)@\1.com
للبحث عن تعبير معين للأمام /
ثم أدخل التعبير أما للخلف ?
و لتكرار آخر بحث n
. للبحث عن تعبير عادي وإبداله
بشيء آخر نستعمل :substitute
أو :s
ويمكنك تحديد الأسطر التي تريد العمل عليها
مثلاً من سطر 2 إلى 15 بكتابة :2,15s
فإذا أردت النص كله
استعمال % أي :%s
متبوعة بالتعبير الذي تريد
البحث عنه ثم العبارة الجديدة التي يضعه مكانه
ثم خيارات يفصل بينهما / مثلاً :%s/Ali/Ahmad/gc
أما الخيارات المستعملة فيمكن أن تكون g أي أكثر من مرة في السطر
ويمكن أن تكون c أي أن يسأل قبل كل تتغيير.
لاحظ أنه يمكنك الإستفادة من كامل مزايا RE مثل
أن تكون العبارة كلمة مستقلة وليس جزء من كلمة باستعمال <>
مثل :%s/\<Ali\>/Ahmad/gc
.
أو (وهذا المثال من ثائق VIM) إذا كنت تريد إبدال كل عبارتين تفصل بينهما فاصلة
مكان بعض بأن تصبح
foo , bar
بعد التعديل bar foo
بالأمر :%s/\([^,]*\), \(.*\)/\2 \1/
وهناك طور ثالث في VIM هو التحديد المرئي visual mode وفي هذا الطور تقوم بكتابة عمليات التحريك فيعمل VIM على تحديد منطقة وتظليلها ثم تضغط على رمز العملية للعمل على الجزء المظلل بدلاً من إدخال العملية ثم رمز الحركة كما في الطور العادي. للدخول في هذا الطور يوجد ثلاث طرق أولى هذه الطرق هي الضغط على v انظر إلى السطر لتالي
This is a very long long line with meaningless english text. |----------------------->
o
.
وثاني طرق الدخول إلى الطور المرئي هي بالضغط على V والفرق أن التحديد هنا للسطر كاملاً حتى لو
مررت على جزء منه لهذا تسمى linewise visual mode.
وثالثها CTRL+V
وهي تسمى blockwise visual mode وهذه تسمح لك بتحديد قطعة مستطيل
يفيد عند العمل على عدة أعمدة من الكلمات والعغبة في تعديل عمود منها
مثلاً لحذف العمود الخاص بأحمد في
ali ahmad belal exam1 10 8 6 exam2 8 8 7 exam3 9.5 7 6
CTRL+V
ثم تحرك إلى نهاية الكلمة ب e
ثم انزل 4 أسطر ب4j
أو بالأسهم
ثم اضغط d لحذف ما تم تعليمه.
ونلاحظ أن المنطقة المحددة هنا لها 4 أطراف
نتنقل بينها بالضغط على o
أو O
.
اكتب نصاً كالتالي
#include <gl.h> #include <glu.h> #include <glut.h> #include <glui.h>
gl/gl.h
و
gl/glu.h
و gl/glut.h
و gl/glui.h
ضع المؤشر عند حرف g الأول من gl.h
ثم اضغط CTRL+V
ثم انزل لتحديد كامل الأسطر
ثم اضغط Igl/[ESC]
حيث I هي عملية
إضافة النص gl/
قبل المنطقة المحددة.
لاحظ أنك يجب أن لا تنس [ESC]
وأنك قبل الضغط
عليها لن ترى الإضافة إلا في سطر واحد
هذا البرامج هو حالياً مفسر للغة lisp للذكاء الصناعي
التي كتب بها أصلاً قبل عقود ثم أعيد كتابته بلغة سي
وهو يحتوي على العديد من المزايا منها التعرف على
النص وتلوينه تبعاً للغة البرمجة، ومنها الإضافات الكثيرة التي تتراوح من
الألعاب إلى إكمال النص،تصفح لإنترنت وقراءة البريد ومساعدة العميان
وغيرها من المزايا. ما يميزه عن VIM هو أنه بطور واحد
(أو بكلمات أدق الأطوار في emacs تعني شيئاً مختلفاً تماماً)
مما يسهل التعامل معه نسبياً، فهو يقوم على
سلسلة من الأزرار تبدأ غالباً بمفتح التحكم control
أو CTRL
الذي يرمز له للإختصار C
فإذا رأيت C-x
في ملفات المساعدة فإنها تعني CTRL+x
أما إذا رأيت M-x
فهي تعني META+x
و META
هذا هو مفتاح موجود في في الأجهزة التي كانت موجودة عند اختراع
emacs قبل فترة طويله وهو غالباً ليس موجوداً في لوحة مفاتيحك
لهذا استعمل المفتاح ALT
كبديل عنه أي أن
M-x
تعني ALT-x
لتعلم هذا البرامج اضغط C-h t
ولقراءة وثائق المعلومات عنه اضغط C-h i
أما للأسئلة الأكثر تكراراً فاضغط C-h F
.
في emacs كل وظيفة تقوم بها بالأزرار لها اسم طويل
(وهناك وظائف ليس لها أزرار)
مثلاً C-h i
التي تحدثنا عنها اسمها الكامل info
لتشغيل وظيفة بمعرفة اسمها اكتب M-x
ثم اسم الوظيفة
مثلاً M-x info
انظر إلى اسفل الشاشة وأنت تكتب
الأوامر فهناك يظهر ما تكتبه، ولأن الأوامر الأخرى ليست
بسهولة info
بل قد تكون help-with-tutorial
لهذا يوفر emacs طريقة لإكمال اسماء الوظائف
وذلك بالضغط على زر [TAB]
يوفر emacs أطوار بحيث يوفر لك في كل منها مزاي إضافية
مثلاً في طور cc-mode
المخصص للغة C/C++
و Java
ستجد في القوائم خياراً جديداً اسمه compile وخيارات أخرى
تتعلق بمساعدتك في البرمجة بهذه اللغات، أما في طور
text-mode الذي يحدد تلقائياً عند العمل بملف اسمه ينتهي .txt
الذي يساعدك على عمل ملف يسهل على البشر قراءته.
وفي طور الرزنامة calender يعرض لك الرزنامة ويحول من هجري إلى ميلادي
ويظهر قائمة moon تعطيك أطوار القمر moon phase هلال وتربيع وبدر ...
وفي طور الطبيب النفسي تستطيع التحدث معه بكتابة أي شيء ثم ضغط ENTER مرتين.
تجد هذه الأطوار في قائمة tools.
لفتح ملف Ctrl+x Ctrl+f لا تنتظر ظهور صندوق حوار لاختيار الملف انظر إلى أسفل الشاشة هناك اكتب اسم الملف إذا كنت لا تعرفه اكتب أي جزء ثم [TAB] ثم ثم اختر من بين الخيارات للحفظ Ctrl+x Ctrl+s للحفظ باسم آخر Ctrl+x Ctrl+w للخروج منه Ctrl+x Ctrl+c
محرر نصي صغير الحجم وسهل الاستخدام والتعلم لا يعتمد على الكثير من المكتبات. يشبه محرر pico مع المزيد من المزايا. لهذا اختارته ديبيان Debian ليكون المحرر التلقائي في مرحلة التركيب الأولية.
اكتب nano متتبوعة باسم الملف إن شئت، ستظهر
الشاشة مقسومة إلى جزئين، السفلي الصغير يحتوي مساعدة
تفيدك في شق طريقك مع هذا المحرر. تكون صيغتها على كل
^G
التي تعني CTRL+G
فمثلاً للحصول على مساعدة اضغط CTRL+G
ولفتح ملف اضغط CTRL+R
و لحفظ الملف CTRL+O
ولمحاذاة النص CTRL+J
و للبحث CTRL+W
وللتدقيق الإملائي CTRL+T
.
<< السابق | كتاب لينكس الشامل | التالي >> |