مقدمة عن أوضاع التحرير

يوفر Bash وضعين شائعين للتحرير بناءً على محرري النصوص الشهيرين: Emacs و Vi. يمكنك التبديل بينهما باستخدام الأوامر set -o emacs و set -o vi.

نصيحة: الوضع الافتراضي في معظم توزيعات لينكس هو وضع Emacs. إذا كنت معتاداً على Vi/Vim، فقد تفضل استخدام وضع Vi في Bash.

التبديل بين الأوضاع

لتبديل بين أوضاع التحرير، استخدم الأوامر التالية:

Terminal
# التبديل إلى وضع Emacs (الافتراضي في معظم الأنظمة)
set -o emacs

# التبديل إلى وضع Vi
set -o vi

# عرض الوضع الحالي
echo $SHELLOPTS | grep -o 'emacs\|vi'
ملاحظة: لإجراء التغيير دائمًا، أضف الأمر المناسب إلى ملف ~/.bashrc الخاص بك.
وضع Emacs
وضع Vi

وضع Emacs

وضع Emacs هو الوضع الافتراضي في معظم shells. يعرض اختصارات readline التي تتيح لك تحريك المؤشر، قص/لصق النص وتراجع التعديلات.

Terminal
# التبديل إلى وضع Emacs
set -o emacs

اختصارات لوحة المفاتيح

الاختصار التفسير
Ctrl + aتحريك المؤشر إلى بداية السطر
Ctrl + eتحريك المؤشر إلى نهاية السطر
Meta + bتحريك المؤشر للخلف كلمة واحدة
Meta + fتحريك المؤشر للأمام كلمة واحدة
Ctrl + wقص آخر كلمة
Ctrl + uقص كل شيء قبل المؤشر
Ctrl + kقص كل شيء بعد المؤشر
Ctrl + yلصق آخر نص تم قصه
Ctrl + _تراجع
Ctrl + rبحث عكسي في التاريخ
Ctrl + lمسح الشاشة
Ctrl + dخروج (إذا كان السطر فارغاً) أو حذف حرف
ملاحظة: Ctrl تعني الضغط على زر Control؛ Meta تعني عادةً زر Alt أو بادئة Esc. سير عمل شائع: استخدم Ctrl+u لقص السطر الحالي، ثم استرجع المعلومات، ثم استعده باستخدام Ctrl+y.
مثال على سير العمل في وضع Emacs
  1. اكتب أمراً طويلاً
  2. أدركت أنك تحتاج إلى تنفيذ أمر آخر أولاً
  3. اضغط Ctrl+u لحفظ السطر الحالي في الذاكرة
  4. نفّذ الأمر الآخر الذي تحتاجه
  5. اضغط Ctrl+y لاستعادة السطر المحفوظ
  6. تابع العمل أو اضغط Enter لتنفيذ الأمر

وضع Vi

وضع Vi يتيح لك استخدام أوامر تشبه Vi في موجه Bash. عند تعيينه، تبدأ في وضع الإدخال (يمكنك الكتابة بشكل طبيعي). اضغط Esc للتبديل إلى وضع الأوامر.

Terminal
# التبديل إلى وضع Vi
set -o vi

اختصارات لوحة المفاتيح (وضع الأوامر)

الاختصار التفسير
hتحريك المؤشر لليسار
lتحريك المؤشر لليمين
jالانتقال للخلف في سجل الأوامر
kالانتقال للأمام في سجل الأوامر
0 (صفر)الانتقال إلى بداية السطر (يبقى في وضع الأوامر)
$الانتقال إلى نهاية السطر (يبقى في وضع الأوامر)
iالدخول إلى وضع الإدخال عند المؤشر
aالدخول إلى وضع الإدخال بعد المؤشر
Aالانتقال إلى نهاية السطر والدخول إلى وضع الإدخال
ddحذف السطر الحالي (يمكن لصقه)
Dحذف من المؤشر إلى نهاية السطر (يمكن لصقه)
pلصق آخر نص تم نسخه/حذفه
uتراجع
Ctrl + rإعادة
/بدء البحث في سجل الأوامر
nالتوجه إلى نتيجة البحث التالية
Nالتوجه إلى نتيجة البحث السابقة
ملاحظة: في وضع Vi، يكون لديك وضعان: وضع الإدخال (للكتابة العادية) و وضع الأوامر (للتنقل والتحرير). اضغط Esc للتبديل إلى وضع الأوامر، واضغط i أو a للعودة إلى وضع الإدخال.
مثال على سير العمل في وضع Vi
  1. اكتب جزءاً من أمر
  2. اضغط Esc للتبديل إلى وضع الأوامر
  3. استخدم k و j للبحث في سجل الأوامر
  4. عند العثور على الأمر المطلوب، استخدم i أو a للعودة إلى وضع الإدخال
  5. عدّل الأمر حسب الحاجة
  6. اضغط Enter لتنفيذ الأمر

مقارنة بين الوضعين

الميزة وضع Emacs وضع Vi
الوضع الافتراضي نعم في معظم التوزيعات لا
منحنى التعلم أسهل للمبتدئين أصعب، يتطلب معرفة بأوامر Vi
الكفاءة جيدة للمستخدمين العاديين ممتازة للمستخدمين المتقدمين
وضعية العمل وضع واحد فقط وضعان: إدخال وأوامر
التخصيص سهل عبر ~/.inputrc سهل عبر ~/.inputrc
المناسب ل المستخدمين العاديين، مبتدئي لينكس مستخدمي Vi/Vim، المطورين المتقدمين
نصيحة: جرب كلا الوضعين لترى أيهما更适合 لطريقة عملك. إذا كنت معتاداً على Vi/Vim، فمن المحتمل أن تفضل وضع Vi في Bash.

تخصيص أوضاع التحرير

يمكنك تخصيص سلوك أوضاع التحرير عن طريق ملف ~/.inputrc:

Terminal
# جعل وضع Vi الافتراضي
set editing-mode vi

# جعل وضع Emacs الافتراضي (القيمة الافتراضية)
set editing-mode emacs

# إعدادات أخرى لتحسين التجربة
set show-mode-in-prompt on
set vi-cmd-mode-string "\1\e[1;32m\2cmd\1\e[0m\2"
set vi-ins-mode-string "\1\e[1;33m\2ins\1\e[0m\2"
ملاحظة: بعد تعديل ملف ~/.inputrc، تحتاج إلى إعادة تشغيل shell أو تنفيذ bind -f ~/.inputrc لتطبيق التغييرات.