zshell

الطرفية

محركات الطرفية في Zshell وبيئة الصدفة والتعامل مع الروابط والإشعارات وميزات الأمان.

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

محركات الطرفية

اختر المحرك من الإعدادات → الطرفية → المحرك:

المحركملاحظات
Ghosttyالخيار الافتراضي
Alacrittyيستخدم ذاكرة أقل عادةً

يدعم كلاهما تسريع الرسوميات وعرض الصور وفهرس سمات Zshell المشترك والبحث وإبلاغ أحداث الفأرة والإشعارات وتقارير التقدم. يؤثر تغيير المحرك في الطرفيات الجديدة فقط؛ وتحتفظ اللوحات الحالية بالمحاكي الذي بدأت به.

صدفتك كما هي

تبدأ كل جلسة صدفة تسجيل الدخول لحسابك، فتُحمَّل مطالبتك وأسماء الأوامر البديلة والدوال وملفات الإعدادات المخفية كما في أي طرفية أخرى. يضيف Zshell متغيرات للقدرات والهوية:

المتغيرالقيمة
TERM_PROGRAMghostty
TERM_PROGRAM_VERSIONإصدار قدرات Ghostty الذي ينفذه Zshell
ZSHELL_TERMghostty أو alacritty، بحسب المحرك الفعلي للوحة

يعلن المحركان عن Ghostty عبر TERM_PROGRAM لأن أدوات سطر الأوامر التي تدعم الصور والإشعارات تستخدمه مؤشرًا إلى القدرات. استخدم ZSHELL_TERM فقط عندما تحتاج فعلًا إلى التمييز بين محركي العرض.

لا يقرأ Zshell إعدادات ~/.config/ghostty ولا إعدادات Alacritty. تُضبط الخطوط والألوان وسلوك الإدخال والمحرك من إعدادات Zshell نفسه.

عند التشغيل من Dock أو Finder يقرأ Zshell قيمة SSH_AUTH_SOCK من صدفة تسجيل الدخول التفاعلية لاستخدام الوكيل المختار في dotfiles. التشغيل من طرفية يحتفظ بالوكيل الموروث الصالح.

أذونات النظام

يمكن للبرامج المحلية في طرفية Zshell طلب الوصول إلى الكاميرا أو الميكروفون، أو التحكم في تطبيق آخر عبر Apple Events. ينسب macOS هذه الطلبات إلى Zshell؛ اسمح بالوصول للبرامج الموثوقة فقط. يُمنح إذن الأتمتة لكل تطبيق مستهدف على حدة.

أدِر الوصول من إعدادات النظام → الخصوصية والأمن → الكاميرا أو الميكروفون أو الأتمتة. يؤدي رفض الطلب إلى حظر الميزة المعنية. لا يمنح Zshell هذه الأذونات تلقائيًا.

التركيز يتبع الفأرة

فعّل الإعدادات → الطرفية → السلوك → التركيز يتبع الفأرة للتركيز على الجزء عند دخول المؤشر. معطل افتراضياً ويعمل مع المحركين والطرفية السريعة. لا ينقل التركيز أثناء السحب، أو من محرر، أو مع قائمة أو حوار مفتوح.

terminal.focus-follows-mouse = true

الإجراءالاختصار
بحثCmd+F
البحث عن التاليCmd+G
البحث عن السابقShift+Return داخل شريط البحث
استخدام التحديد للبحثCmd+E
مسح الطرفيةCmd+K

يعمل البحث في لوحة الطرفية أو المحرر التي عليها التركيز، ويظل نشطًا ما دام حقل البحث يملك تركيز لوحة المفاتيح.

تحرير الإدخال عند المطالبة

انقر داخل مطالبة الصدفة النشطة لنقل مؤشر الإدخال، ثم تابع الكتابة في ذلك الموضع. في مطالبة zsh، اسحب عبر الإدخال لتحديد نطاق؛ تستبدل الكتابة التحديد، بينما يحذفه Backspace أو Delete. يظل النقر المزدوج أو الثلاثي يحدد نص الطرفية. وتستمر البرامج التي تفعّل إبلاغ أحداث الفأرة، مثل الواجهات النصية بملء الشاشة، في تلقي أحداث الفأرة الخاصة بها.

إذا لم تُحمِّل صدفة متداخلة أو بديلة دعم Zshell لتحرير المطالبة، يظل السحب يحدد نص الطرفية للنسخ، لكنه لا يحرر الإدخال. يعود تحرير نطاق الإدخال عند الخروج إلى المطالبة الأصلية.

يدعم مربع الإدخال القياسي في Claude Code النقر لتحديد موضع المؤشر والسحب للتحرير على كلا المحركين، بما في ذلك المسودات الملتفة ومتعددة الأسطر. اكتب أو الصق لاستبدال الإدخال المحدد، أو اضغط Backspace أو Delete لحذفه. تحتفظ أوضاع Vim العادية والمرئية ومربعات الحوار ومواضع المرفقات أو النص الملصق المطوي ونص المحادثة الذي مُرِّر بعيدًا بسلوك تحديد النص المعتاد في الطرفية. وتواصل التطبيقات التي تستحوذ على الفأرة معالجة إدخالها بنفسها.

يستخدم الإدخال الصوتي من Zisla إجراء اللصق في الطرفية. وفي Claude Code يستبدل أيضًا نطاق الإدخال المحدد، مع استمرار دعم تكرار العبارة عمدًا.

اختصارات التطبيق في المقدمة

إذا تعارضت اختصارات تطبيق الطرفية مع Zshell، فانقر بزر الفأرة الأيمن على لوحته وفعّل حظر أوامر Zshell. تُمرَّر مجموعات المفاتيح التي تتضمن مفاتيح تعديل، ومنها Ctrl+Return، إلى التطبيق في المقدمة ما دامت اللوحة تملك تركيز لوحة المفاتيح. تبقى أوامر النسخ واللصق وتحديد الكل متاحة.

يخص هذا الإعداد تلك اللوحة وحدها. انقر بزر الفأرة الأيمن مجددًا وأزل علامة الاختيار لاستعادة اختصارات Zshell. إذا كان التطبيق يستحوذ على الفأرة، فاضغط Shift أثناء النقر بزر الفأرة الأيمن لفتح قائمة Zshell.

طابور الأوامر

ضع التركيز في طرفية واضغط Cmd+Shift+M، أو اختر إظهار/إخفاء طابور الأوامر من لوحة الأوامر. يظهر الشريط أسفل تلك الطرفية. اكتب إدخالًا واضغط Return أو إضافة إلى الطابور. كل إدخال سطر واحد، وتُستبدَل فواصل الأسطر الملصقة بمسافات.

عندما تعود صدفة zsh الأصلية إلى مطالبة فارغة، يرسل Zshell الإدخال التالي ثم يضغط Return. تُنفَّذ الإدخالات بترتيب الطابور. ينتظر الإرسال التلقائي أثناء سيطرة وكيل أو برنامج آخر في المقدمة على الطرفية، أو إذا احتوت مطالبة الصدفة على مسودة إدخال. يتطلب ذلك تكامل Zshell مع zsh؛ ويمكن للصدفات الأخرى والصدفات المتداخلة استخدام الإرسال اليدوي.

لكل إدخال زران: إرسال الآن وإزالة. يرسل إرسال الآن النص وReturn فورًا إلى البرنامج الحالي في الطرفية، دون انتظار مطالبة الصدفة. يخفي Esc أو زر الإغلاق الشريط مع إبقاء الإدخالات في الطابور. لكل طرفية طابورها؛ ويؤدي إغلاق الجلسة أو الخروج من Zshell إلى التخلص منه.

المسارات وعناوين URL

يتعرف Zshell على عناوين الويب والمسارات المحلية الموجودة التي تطبعها برامج الطرفية. يمكن أن تكون الروابط المحلية مطلقة، أو نسبية إلى ~/، أو تبدأ بـ ./ أو ../، أو تكون نسبية إلى مجلد العمل الحالي للوحة. لا تمنع لاحقة تشخيصية مثل :42 أو :42:7 العثور على الملف المقصود.

  • انقر مع الضغط على Command على مسار محلي لإظهاره في Finder، أو على عنوان URL لفتحه في المتصفح الافتراضي.
  • انقر بزر الفأرة الأيمن مع الضغط على Command على مسار لعرض علامة تبويب ملف جديدة / لوحة ملف جديدة، أو على عنوان URL لعرض علامة تبويب متصفح جديدة / لوحة متصفح جديدة.
  • تتلقى البرامج بملء الشاشة التي تفعّل إبلاغ أحداث الفأرة النقر بزر الفأرة الأيمن دون مفاتيح تعديل. اضغط Shift أثناء النقر بزر الفأرة الأيمن لفتح قائمة الطرفية واللوحة في Zshell بدلًا من ذلك.

يوفر ذلك طريقًا مباشرًا من مخرجات المترجم وسجلات محادثات الوكلاء إلى المشروع نفسه. يشرح قسم لوحات المتصفح سلوك التصفح.

الإشعارات

يمرر Zshell حدثين من الطرفية إلى مركز الإشعارات:

  • جرسًا من جلسة ليس عليها التركيز؛
  • طلب OSC 777;notify من برنامج مثل عملية بناء طويلة أو وكيل برمجة.

يمكن للإشعارات تشغيل صوت النظام. يؤدي النقر عليها إلى تنشيط Zshell والانتقال إلى الجلسة التي أصدرتها تحديدًا. يطلب macOS الإذن عند أول محاولة من طرفية لإرسال إشعار، وليس عند تشغيل Zshell.

انتهاء الأوامر

افتح الإعدادات → الطرفية → إشعارات الأوامر لجعل Zshell يرسل إشعارًا عند انتهاء أمر:

  • الأوامر طويلة التشغيل: اختر 5 أو 10 أو 30 أو 60 ثانية. يرسل الأمر إشعار اكتمال إذا استمر تشغيله هذه المدة على الأقل. القيمة الافتراضية متوقف.
  • الأوامر الفاشلة: إرسال إشعار عند حالة خروج غير صفرية، بصرف النظر عن مدة التشغيل. هذا الخيار مفعّل افتراضيًا في الإعدادات الجديدة ويمكن تعطيله مستقلًا.

تسري الإعدادات على طرفيات zsh التي تُنشأ بعد التغيير، على أي من المحركين. وهي تستخدم حدث انتهاء الأمر في الصدفة الأصلية؛ ولا تبلغ الأوامر المنفذة داخل صدفة متداخلة أو برنامج تفاعلي عن اكتمال كل أمر عبر هذا التكامل.

يمكن حفظ الإعدادات نفسها في ~/.config/zshell/config.toml:

terminal.notify-finish-seconds = 30
terminal.notify-on-error = true

اضبط terminal.notify-finish-seconds على 0 لإيقاف الإشعارات المبنية على مدة التشغيل. يخضع وصول الإشعارات لإعدادات إشعارات macOS.

تقارير التقدم

تعرض البرامج التي ترسل تقدمًا عبر OSC 9;4 شريطًا رفيعًا فوق الطرفية، مع حالات متميزة للتقدم الطبيعي والتوقف المؤقت والخطأ. لا يلزم تفعيل شيء؛ إذا أبلغ البرنامج عن التقدم، تعرضه اللوحة.

الحافظة والإفلات وأمان اللصق

  • تحتاج قراءة الحافظة إلى تأكيد. يمكن لـ OSC 52 طلب حافظة macOS، حتى من مضيف بعيد عبر SSH. يسأل Zshell قبل إرجاع محتواها.
  • تُميَّز عمليات اللصق الخطرة. ينتظر النص متعدد الأسطر أو الشبيه بالأوامر تأكيدك بدلًا من إرساله مباشرة.
  • تتحول الملفات واللقطات إلى مسارات آمنة للصدفة. تُدرج ملفات Finder كمسارات مطلقة مقتبسة. تُحفظ الصورة المنفردة كملف PNG مؤقت خاص ثم يُلصق مساره. ترفع الأجزاء البعيدة الملفات واللقطات إلى المضيف أولاً.

الإدخال بمفتاح Option

يبقى Option افتراضيًا تحت تحكم مصدر إدخال macOS النشط، لكي تتمكن تخطيطات مثل Polish Pro من كتابة أحرفها المركبة. فعّل استخدام Option بوصفه Alt/Meta في الإعدادات إذا أردت أن تتلقى برامج الطرفية مجموعات Option كاختصارات Meta. راجع terminal.macos-option-as-alt.

الأمر zshell

تتضمن كل طرفية Zshell واجهة سطر أوامر تعرف سياق المشروع:

zshell                         # إنشاء مشروع في المجلد الحالي
zshell vim ~/src/app.swift     # إنشاء المشروع وتشغيل هذه الوسائط في الطرفية الأولى
zshell +themes                 # استعراض السمات ومعاينتها تفاعليًا
zshell +themes --list --dark   # طباعة أسماء السمات دون فتح متصفح السمات
zshell +help                   # عرض جميع مجموعات الأوامر

يعاين متصفح السمات كل اختيار على التطبيق كله؛ يحفظ Return الاختيار، ويعيد Escape السمة السابقة.

الخطوط

يأتي Zshell مع JetBrains Mono ورموز Nerd Font. يمكن لأي عائلة خطوط أحادية العرض مثبتة أن تحل محل الخط اللاتيني، ويمكن إدراج عائلة CJK مثبتة قبل خطوط الرموز وخطوط النظام الاحتياطية. راجع font-family، وterminal.font-fallback-family، وfont-size، وterminal.font-thicken، وterminal.line-height.

الطرفية السريعة العامة

أثناء تشغيل Zshell، يعرض Cmd+I أو الطرفية → الطرفية السريعة طرفية مستقلة أو يخفيها. اضبط الحجم والعتامة والاختصار من الإعدادات → الطرفية → الطرفية السريعة.

سلوك الجلسة: إعادة استخدام مساحة العمل (الافتراضي) / مساحة عمل جديدة في كل مرة. تحافظ إعادة الاستخدام على الأجزاء والمهام. تنتهي مساحات العمل الجديدة عند الإخفاء. يتغير الوضع عند العرض التالي، وتبقى المساحة السابقة متاحة عند العودة. يتبع سجل الأوامر إعدادات الصدفة. تبدأ مساحة العمل الجديدة دائمًا بطرفية فارغة واحدة دون استعادة المخرجات أو تخطيط الأجزاء أو حالة الجلسة السابقة.

قسّم باستخدام تقسيم لليمين / تقسيم لأسفل أو القائمة السياقية أو Cmd+D / Cmd+Shift+D. ينطبق الاحتفاظ أدناه على المساحات المعاد استخدامها، بما في ذلك النسب والتركيز.

  • الاختصار وEsc والنقر خارج النافذة وفقدان التركيز تخفي النافذة فقط. تبقى الصدفة نفسها والإدخال والسجل والمهام قيد التشغيل.
  • ثبّت النافذة لإبقائها ظاهرة عند تبديل التطبيقات. يُحفظ الحجم والعتامة والتثبيت عند الإخفاء.
  • نفّذ exit لإنهاء الجلسة؛ فتحها مجددًا يبدأ صدفة جديدة.

فعّل terminal.preserve-sessions قبل فتح طرفية سريعة جديدة لإبقائها بعد الخروج العادي من Zshell. عند إعادة فتحها، يتصل كلا المحركين بالصدفة نفسها. Zshell → الخروج وإنهاء جميع الجلسات ينهي الجلسات المخفية أيضًا. إعادة تشغيل macOS تنهي الجلسات.

التشغيل السريع، الذي يحفظ الأوامر ويشغّلها، ميزة مستقلة.

تلميحات أوامر Vim

تحكّم في التلميحات عبر الإعدادات → الطرفية → السلوك → تلميحات أوامر Vim، ثم افتح علامة المعلومات في الشريط الجانبي الأيمن. يظهر قسم أوامر VIM أسفل معلومات الجلسة أثناء نشاط Vim أو Vi أو Neovim. الخيار مفعّل افتراضيًا في الإعدادات الجديدة، ويسري فورًا على الطرفيات الحالية في كلا المحركين.

تبقى القائمة الكاملة للأوامر الشائعة متاحة؛ الذي يتغير هو الأولوية فقط. يضع الوضع العادي (Normal) الأوامر :w و:q وyy وp/P أولًا، بينما يعطي وضع التحديد الكتلي (Visual Block) الأولوية لـ I/A وتعديلات الكتل والتنقل بين الزوايا. ولأوضاع الإدراج (Insert) والاستبدال (Replace) والتحديد المرئي (Visual) وتحديد الأسطر (Visual Line) والاختيار (Select) وسطر الأوامر والبحث ترتيبها الخاص. يذكر كل إدخال الأوضاع التي يناسبها. ابحث بالمفاتيح أو الوصف أو اسم الوضع؛ وتتبع الأوصاف وواجهة البحث أيًا من لغات التطبيق السبع عشرة. امسح الاستعلام لاستعادة القائمة كاملة. التلميحات مرجع فقط، ولا ترسل أي إدخال إلى المحرر.

تُعرَف المحررات المحلية من الملف التنفيذي العامل في المقدمة. داخل SSH أو Mosh أو مُضاعِف طرفيات، يعتمد التعرف على سطر وضع Vim أو حالته الظاهر وتخطيط الشاشة، دون تثبيت ملحق بعيد. أبقِ showmode في Vim أو سطر حالة يمكن التعرف عليه مفعّلًا. قد تؤدي الإعدادات التي تخفي أسماء الأوضاع أو تغيّرها إلى الرجوع لتلميحات الوضع العادي أو منع التعرف عن بعد؛ ولا تُفسَّر تعيينات المفاتيح المخصصة. تؤخذ العينات من لوحة المعلومات النشطة فقط، وتختفي التلميحات عند تغير البرنامج في المقدمة أو تعذر التعرف على المحرر.

يمكنك أيضًا تفعيلها في ملف الإعدادات بواسطة terminal.vim-command-hints = true.