Emacs: محرر يعيش داخل الطرفية
درس 5 من 11
5Emacs: محرر يعيش داخل الطرفية
Emacs محرر نصوص قابل للتوسعة بلا حدود، ويعمل بالاختصارات. ستفهم مفاهيمه الخاصة (المخزن، النقطة، العلامة، حلقة القتل) وتتعلم الاختصارات الأساسية بمنطقها لا بالحفظ الأعمى.
ماذا تشاهد في الرسم: تثبّت العلامة، وتحرّك النقطة فتتكوّن المنطقة، ثم C-w يقصّها إلى حلقة القتل وC-y يعيدها حيث تريد.
خارطة هذا الجزء
المفاهيم بالترتيب، اضغط أيًّا منها للقفز إليه:
طريقان إلى نفس الفكرة
Emacs مثل ورشة نجارة تستطيع أن تضيف إليها أي أداة تريدها. كل ما تفعله فيها، حتى تحريك المؤشر، أمر له اسم واختصار. تبدو الاختصارات كثيرة في البداية، لكنها مبنية على منطق: مفتاح Ctrl للحروف والسطور الصغيرة، وAlt للكلمات والجمل الأكبر.
Emacs محرّر قابل للبرمجة بلغة Emacs Lisp. النص المفتوح يعيش في مخزن buffer، والمؤشر هو النقطة point، والعلامة mark مع النقطة تحددان منطقة region. ما تقصّه يذهب إلى حلقة القتل kill ring فتستعيده بـC-y ثم M-y، وأي أمر يُستدعى باسمه عبر M-x.
قبل أن تبدأ
🐚التنقل في الشل
ستفتح Emacs من الشل وتحتاج معرفة أين توجد ملفاتك.
⌨️مفتاحا Ctrl و Alt/Meta
اختصارات Emacs تُكتب C-x أي Ctrl+x، و M-x أي Meta (غالبًا Alt أو Esc) + x.
الفكرة الجوهرية
1المخزن (Buffer)
ما تراه وتعدّله في Emacs ليس الملف نفسه بل نسخة في الذاكرة تسمى مخزنًا. لا يتغير الملف على القرص إلا عندما تحفظ. يمكنك فتح عدة مخازن والتبديل بينها بـC-x b.
2النقطة والعلامة والمنطقة
النقطة هي موضع المؤشر. العلامة موضع تضعه بـC-SPC. النص بين العلامة والنقطة هو المنطقة التي تعمل عليها أوامر القص والنسخ.
3حلقة القتل (Kill ring)
في Emacs "القتل" يعني القص، و"السحب" (yank) يعني اللصق. ما تقتله لا يضيع: يُخزَّن في حلقة تحتفظ بعدة قصاصات، فتستطيع استرجاع نص قصصته قبل خطوات.
4كل شيء أمر قابل للاستدعاء
كل اختصار يستدعي دالة لها اسم. M-x يتيح لك كتابة اسم أي أمر وتنفيذه حتى لو نسيت اختصاره، وهذا سر قابلية التوسعة: يمكنك تعريف أوامرك أنت.
شكل 1، مسار النص في Emacs: التحديد ثم القص أو النسخ إلى حلقة القتل ثم السحب.
C-g للإلغاء والعودة للحالة الطبيعية.
كيف يعمل: الاختصارات وخطوات التحرير
| المهمة | الاختصار | طريقة التذكر |
|---|---|---|
| فتح ملف | C-x C-f | Find file |
| حفظ | C-x C-s | Save |
| خروج | C-x C-c | Close |
| إلغاء أي أمر معلّق | C-g | Get out |
| بحث للأمام / للخلف | C-s / C-r | Search / Reverse |
| قتل بقية السطر | C-k | Kill |
| قتل المنطقة / نسخها | C-w / M-w | C-w قص، M-w نسخ |
| لصق (سحب) | C-y | Yank |
| تراجع | C-/ أو C-x u | Undo |
| بداية / نهاية السطر | C-a / C-e | a أول الأبجدية، e النهاية |
| تبديل المخزن | C-x b | Buffer |
| تنفيذ أمر بالاسم | M-x | eXecute |
emacs ملفي.txt في الشل أو C-x C-f داخل Emacs.C-n سطر لأسفل، C-p لأعلى، C-f حرف للأمام، C-b للخلف.C-k واللصق بـC-y.C-x C-s.C-x C-c؛ إن كانت هناك تعديلات غير محفوظة سيسألك.مثال محلول: مهام تحرير يومية
| الحالة | ما تفعله | النتيجة |
|---|---|---|
| تريد نقل سطر لمكان آخر | C-a, C-k, انتقل, C-y | السطر الآن في الموضع الجديد |
| نسخ فقرة | C-SPC, حرّك المؤشر, M-w, انتقل, C-y | الفقرة ظهرت مرتين |
| قصصت شيئًا بالخطأ | C-/ | تراجع عن القص |
| ضغطت شيئًا غريبًا | C-g | عودة للحالة العادية |
C-h t لتفتح الدرس التفاعلي المدمج في Emacs؛ هو أفضل طريقة لتتعلم بيدك خلال دقائق.
خرافة مقابل حقيقة
| الخرافة | الحقيقة |
|---|---|
| Emacs صعب لأنه يحتاج حفظ مئات الاختصارات. | اثنا عشر اختصارًا تكفي للعمل اليومي، وللباقي M-x والبحث في الدليل. |
| Emacs مجرد محرر نصوص. | هو بيئة قابلة للبرمجة: يقرأ البريد ويدير الملفات ويشغل الشل، لأن كل شيء فيه دوال قابلة للتعديل. |
| إذا أغلقت Emacs فجأة فقدت عملك. | يحتفظ بملفات حفظ تلقائي مؤقتة، لكن لا تعتمد عليها؛ احفظ بنفسك. |
أين تُستخدم هذه الفكرة فعليًا؟
🖧التحرير على الخوادم
حين لا توجد واجهة رسومية، محرر الطرفية هو أداتك.
🧬تأليف الشيفرة
أنماط (modes) لكل لغة تعطي تلوينًا ومسافات تلقائية.
🗂️إدارة الملاحظات
وضع org-mode المشهور لتنظيم المهام والملاحظات.
🏛️تاريخ البرمجيات الحرة
بدأه Richard Stallman ضمن مشروع GNU، وهو من أقدم البرامج الحرة المستمرة.
جرّب بنفسك
كتبت في Emacs ثم نفّذت ls في الشل فوجدت الملف دون تغيير. لماذا؟
المخزن نسخة في الذاكرة؛ الملف على القرص لا يتغير إلا عند الحفظ بـ C-x C-s.
بدا Emacs «معلّقًا» بعد ضغطة غير مقصودة. ما أول ما تفعله؟
غالبًا ينتظر Emacs بقية اختصار؛ C-g يلغي الأمر المعلّق ويعيدك للحالة الطبيعية.
أي اختصار ينسخ المنطقة المحددة دون قصّها؟
C-w تقصّ (kill) وM-w تنسخ، وكلاهما يضع النص في حلقة القتل ويلصقه C-y.
بطاقات مراجعة سريعة
C-x C-s؟C-gM-x؟تحقق من فهمك
لماذا لا يتغير الملف حين أكتب في Emacs؟
لأنك تعدّل مخزنًا في الذاكرة؛ الملف يتغير عند الحفظ فقط.
كيف تنسخ سطرين إلى مكان آخر؟
ضع العلامة C-SPC في بداية السطر الأول، حرّك المؤشر لنهاية الثاني، M-w، انتقل، ثم C-y.
نسيت اختصار أمر؛ ماذا تفعل؟
استخدم M-x واكتب اسم الأمر، أو افتح المساعدة C-h.
مصادر هذا الدرس
مرتّبة بالنوع. ابدأ بالتوثيق الرسمي إذا تبي المرجع الدقيق، وبالمقال أو الفيديو إذا تبي الشرح أولًا.
توثيق رسمي2
خلّصت الدرس؟
سجّل الدخول ليُحفظ تقدّمك.