سؤال

من وجهة نظر البرمجة، عند تعيين شل باش لاستخدام VI أو EMACS عبر

set -o vi

أو

set -o emacs

ما الذي يحدث في الواقع هنا؟ لقد كنت أقرأ كتابا حيث يدعي أن شل باش تستخدم أي من هذه المحررين للمدخلات إلى قذيفة نفسها، لكنني اعتقدت أنه ربما استخدمت ReadLine.

هل كانت مفيدة؟

المحلول

باش لا يزال يستخدم Readline. يستخدم ReadLine إما وضع EMACS أو VI ووضع مفاتيح الوضع بين أوضاع المحرر المختلفة. يمكنك التحقق من مجلد Lib / Readline في التعليمات البرمجية المصدر الأساسية لرؤية الارتباطات الرئيسية المختلفة.

نصائح أخرى

وفقا لصفحة الرجل bash_builtins (1) (على فيدورا 8):

   set [--abefhkmnptuvxBCHP] [-o option] [arg ...]

... (تخطي جميع خيارات الأحرف الفردية)

 - اسم الخيار، اسم الخيار يمكن أن يكون أحد الإجراءات التالية:

...

 تستخدم EMACS واجهة تحرير سطر الأوامر على غرار EMACS. يتم تمكين ذلك بشكل افتراضي عند تفاعلية الشل، ما لم يتم بدء تشغيل SHEL مع خيار - Noediting.
...
 يستخدم VI واجهة تحرير سطر الأوامر على غرار VI.
أفسر ذلك يعني أن bash هو تفسير الأوامر مباشرة لتحرير السطر. يقوم هذا الخيار ببساطة بتعيين الأمر الذي تم ضبطه باستخدامه. انظر صفحة الرجل للحصول على Readline (3).

يستخدم ضغطات المفاتيح المألوفة لمستخدمي أحد هذه المحررين لتحرير سطر الأوامر.

Readline هو المرفق الذي يوفر هذه الميزة إلى باش والبرامج الأخرى.

من man bash:

Readline هذه هي المكتبة التي تعالج إدخال إدخال القراءة عند استخدام قذيفة متساوية، ما لم يتم إعطاء خيار - noediting في استدعاء قذيفة. يستخدم تحرير الخط أيضا عند استخدام الخيار -e إلى المدمج للقراءة. بشكل افتراضي، فإن أوامر تحرير السطر تشبه تلك الخاصة ب emacs. تتوفر واجهة تحرير خط نمط VI أيضا. يمكن تمكين تحرير السطر في أي وقت باستخدام خيارات emacs أو -O VI إلى المدمج المحدد (انظر الأوامر المدمجة شل أدناه). لإيقاف تشغيل تحرير الأسطر بعد تشغيل Shell، استخدم خيارات EMACS + O أو + O VI إلى المدمج المحدد.

من ما أعرفه، readline هو ما يوفر وظيفة تحرير الخط ل bash.

واحد بروفيسو: عندما تضغط v في وضع القيادة السادس، تحصل على مهب كامل vi محرر لتحرير سطر الأوامر الخاص بك.

من man bash:

Readline.
هذه هي المكتبة التي تتعامل مع إدخال القراءة عند استخدام قذيفة تفاعلية، ما لم --noediting يتم إعطاء الخيار في استدعاء شل. بشكل افتراضي، فإن أوامر تحرير السطر تشبه تلك الخاصة ب emacs. تتوفر واجهة تحرير خط نمط VI أيضا. لإيقاف تشغيل خط التحرير بعد تشغيل Shell، استخدم +o emacs أو +o vi خيارات إلى set مدمج.

عندما تقدم لك القذيفة مطالبة (إلا إذا كنت في وضع عدم التحرير)، فأنت بذلك سابقا استخدام readline. وبعد سوف تكون إما في وضع EMACS أو وضع إدراج VI (وهذا هو السبب في أنه يمكنك فقط استخدام ESC للعودة إلى وضع الأمر السادس).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top