اقتراحات تلقائية سريعة/غير مزعجة تشبه الأسماك لـ zsh.
يقترح الأوامر أثناء الكتابة بناءً على السجل والإكمال.
المتطلبات: Zsh v4.3.11 أو الأحدث
راجع INSTALL.md.
أثناء كتابة الأوامر، ستشاهد إكمالًا معروضًا بعد المؤشر بلون رمادي صامت. يمكن تغيير هذا اللون عن طريق ضبط المتغير ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE
. انظر التكوين.
إذا ضغطت على المفتاح → (أداة forward-char
) أو End (أداة end-of-line
) بالمؤشر في نهاية المخزن المؤقت، فسوف يقبل الاقتراح، ويستبدل محتويات المخزن المؤقت لسطر الأوامر بالاقتراح.
إذا قمت باستدعاء أداة forward-word
، فسوف تقبل الاقتراح جزئيًا حتى النقطة التي ينتقل إليها المؤشر.
قد ترغب في تجاوز متغيرات التكوين العامة الافتراضية. يمكن العثور على القيم الافتراضية لهذه المتغيرات هنا.
ملاحظة: إذا كنت تستخدم Oh My Zsh، فيمكنك وضع هذا التكوين في ملف في الدليل $ZSH_CUSTOM
. انظر تعليقاتهم على تجاوز الداخلية.
قم بتعيين ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE
لتكوين النمط الذي يظهر به الاقتراح. الافتراضي هو fg=8
، والذي سيعين اللون الأمامي إلى اللون 8 من لوحة الألوان المكونة من 256 لونًا. إذا كان جهازك يدعم 8 ألوان فقط، فستحتاج إلى استخدام رقم بين 0 و7.
يمكن أيضًا تعيين لون الخلفية، ويمكن تصميم الاقتراح بالخط العريض أو تحته خط أو بشكل بارز. على سبيل المثال، قد يؤدي هذا إلى عرض اقتراحات بنص وردي غامق ومُسطر على خلفية سماوية:
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE= " fg=#ff00ff,bg=cyan,bold,underline "
لمزيد من المعلومات، اقرأ قسم تمييز الأحرف في دليل zsh: man zshzle
أو عبر الإنترنت.
ملاحظة: أبلغ بعض مستخدمي iTerm2 عن عدم قدرتهم على رؤية الاقتراحات. إذا كان هذا يؤثر عليك، فمن المحتمل أن يكون سبب المشكلة هو إعدادات الألوان غير الصحيحة. لتصحيح ذلك، انتقل إلى إعداد iTerm2، وانتقل إلى ملف التعريف > الألوان وتأكد من اختلاف ألوان الألوان الأساسية > ألوان الخلفية وألوان ANSI > الأسود الساطع.
ZSH_AUTOSUGGEST_STRATEGY
عبارة عن مصفوفة تحدد كيفية إنشاء الاقتراحات. يتم تجربة الاستراتيجيات الموجودة في المصفوفة على التوالي حتى يتم العثور على اقتراح. توجد حاليًا ثلاث إستراتيجيات مدمجة للاختيار من بينها:
history
: يختار أحدث مباراة من التاريخ.completion
: يختار اقتراحًا بناءً على ما يقترحه إكمال علامة التبويب. (يتطلب وحدة zpty
، المضمنة مع zsh منذ 4.0.1)match_prev_cmd
: مثل history
، ولكنه يختار أحدث تطابق يتطابق عنصر السجل السابق له مع الأمر الذي تم تنفيذه مؤخرًا (مزيد من المعلومات). لاحظ أن هذه الإستراتيجية لن تعمل كما هو متوقع مع خيارات ZSH التي لا تحافظ على ترتيب السجل مثل HIST_IGNORE_ALL_DUPS
أو HIST_EXPIRE_DUPS_FIRST
. على سبيل المثال، الإعداد ZSH_AUTOSUGGEST_STRATEGY=(history completion)
سيحاول أولاً العثور على اقتراح من السجل الخاص بك، ولكن إذا لم يتمكن من العثور على تطابق، فسوف يجد اقتراحًا من محرك الإكمال.
يعمل هذا البرنامج المساعد عن طريق تشغيل سلوك مخصص عند استدعاء عناصر واجهة مستخدم zle معينة. يمكنك إضافة وإزالة عناصر واجهة المستخدم من هذه المصفوفات لتغيير سلوك هذا المكون الإضافي:
ZSH_AUTOSUGGEST_CLEAR_WIDGETS
: ستقوم عناصر واجهة المستخدم الموجودة في هذه المصفوفة بمسح الاقتراح عند استدعائه.ZSH_AUTOSUGGEST_ACCEPT_WIDGETS
: ستقبل عناصر واجهة المستخدم في هذه المصفوفة الاقتراح عند استدعائها.ZSH_AUTOSUGGEST_EXECUTE_WIDGETS
: ستنفذ عناصر واجهة المستخدم في هذه المصفوفة الاقتراح عند استدعائه.ZSH_AUTOSUGGEST_PARTIAL_ACCEPT_WIDGETS
: ستقبل عناصر واجهة المستخدم في هذه المصفوفة الاقتراح جزئيًا عند استدعائه.ZSH_AUTOSUGGEST_IGNORE_WIDGETS
: لن تؤدي الأدوات الموجودة في هذا المصفوفة إلى تشغيل أي سلوك مخصص.الأدوات التي تعدل المخزن المؤقت والتي لم يتم العثور عليها في أي من هذه المصفوفات ستجلب اقتراحًا جديدًا بعد استدعائها.
ملاحظة: لا ينبغي أن ينتمي عنصر واجهة المستخدم إلى أكثر من واحدة من المصفوفات المذكورة أعلاه.
قم بتعيين ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE
على قيمة عددية لتعطيل الاقتراح التلقائي للمخازن المؤقتة الكبيرة. تم إلغاء تعيين الإعداد الافتراضي، مما يعني أنه سيتم تجربة الاقتراح التلقائي لأي حجم مخزن مؤقت. القيمة الموصى بها هي 20. يمكن أن يكون هذا مفيدًا عند لصق كمية كبيرة من النص في الوحدة الطرفية، لتجنب تشغيل الاقتراح التلقائي للسلاسل الطويلة جدًا.
يتم جلب الاقتراحات بشكل غير متزامن افتراضيًا في إصدارات zsh 5.0.8 والإصدارات الأحدث. لتعطيل الاقتراحات غير المتزامنة وجلبها بشكل متزامن بدلاً من ذلك، unset ZSH_AUTOSUGGEST_USE_ASYNC
بعد تحديد مصدر المكون الإضافي.
وبدلاً من ذلك، إذا كنت تستخدم إصدارًا من zsh أقدم من 5.0.8 وتريد تمكين الوضع غير المتزامن، فاضبط المتغير ZSH_AUTOSUGGEST_USE_ASYNC
بعد تحديد مصدر المكون الإضافي (يمكن ضبطه على أي شيء). لاحظ أن هناك خطأ في إصدارات zsh الأقدم من 5.0.8 حيث سيفشل ctrl + c في إعادة تعيين المطالبة فورًا بعد جلب الاقتراح بشكل غير متزامن.
قم بتعيين ZSH_AUTOSUGGEST_MANUAL_REBIND
(يمكن ضبطه على أي شيء) لتعطيل إعادة ربط عنصر واجهة المستخدم تلقائيًا في كل أمر مسبق. يمكن أن يكون هذا بمثابة تعزيز كبير للأداء، ولكنك ستحتاج إلى التعامل مع إعادة ربط نفسك إذا تغيرت أي من قوائم الأدوات أو إذا قمت أنت أو مكون إضافي آخر بتغطية أي من عناصر واجهة المستخدم التي يتم اقتراحها تلقائيًا. لإعادة ربط الأدوات، قم بتشغيل _zsh_autosuggest_bind_widgets
.
قم بتعيين ZSH_AUTOSUGGEST_HISTORY_IGNORE
على نمط الكرة الأرضية لمنع تقديم اقتراحات لإدخالات السجل التي تطابق النمط. على سبيل المثال، قم بتعيينه على "cd *"
حتى لا تقترح أبدًا أي أوامر cd
مضغوط من السجل. أو اضبطه على "?(#c50,)"
لعدم اقتراح أي شيء مكون من 50 حرفًا أو أكثر.
ملاحظة: يؤثر هذا فقط على استراتيجيات اقتراح history
و match_prev_cmd
.
قم بتعيين ZSH_AUTOSUGGEST_COMPLETION_IGNORE
على نمط الكرة الأرضية لمنع تقديم اقتراحات الإكمال عندما يتطابق المخزن المؤقت مع هذا النمط. على سبيل المثال، قم بتعيينه على "git *"
لتعطيل اقتراحات الإكمال لأوامر git الفرعية.
ملاحظة: يؤثر هذا فقط على استراتيجية اقتراح completion
.
يوفر هذا البرنامج المساعد بعض الأدوات التي يمكنك استخدامها مع bindkey
:
autosuggest-accept
: قبول الاقتراح الحالي.autosuggest-execute
: قبول الاقتراح الحالي وتنفيذه.autosuggest-clear
: مسح الاقتراح الحالي.autosuggest-fetch
: جلب اقتراح (يعمل حتى عند تعطيل الاقتراحات).autosuggest-disable
: تعطيل الاقتراحات.autosuggest-enable
: إعادة تمكين الاقتراحات.autosuggest-toggle
: للتبديل بين الاقتراحات الممكّنة/المعطلة.على سبيل المثال، سيؤدي هذا إلى ربط ctrl + space بقبول الاقتراح الحالي.
bindkey ' ^ ' autosuggest-accept
إذا كانت لديك مشكلة، فيرجى البحث في قائمة المشكلات على GitHub لمعرفة ما إذا كان شخص آخر قد أبلغ عنها بالفعل.
قبل الإبلاغ عن مشكلة، يرجى محاولة التعطيل المؤقت لأقسام التكوين لديك والمكونات الإضافية الأخرى التي قد تتعارض مع هذا المكون الإضافي لعزل المشكلة.
عند الإبلاغ عن مشكلة، يرجى تضمين ما يلي:
.zshrc
الذي سيؤدي إلى ظهور المشكلة. انظر هذا التعليق للحصول على مثال جيد لما يعنيه هذا.zsh --version
) قم بإزالة الكود الذي يشير إلى هذا البرنامج المساعد من ~/.zshrc
.
قم بإزالة مستودع git من القرص الصلب الخاص بك
rm -rf ~ /.zsh/zsh-autosuggestions # Or wherever you installed
قم بتحرير الملفات المصدر في src/
. قم بتشغيل make
لإنشاء zsh-autosuggestions.zsh
من تلك الملفات المصدر.
طلبات السحب هي موضع ترحيب! إذا قمت بإرسال طلب سحب، يرجى:
develop
( وليس master
) تتم كتابة الاختبارات في روبي باستخدام إطار عمل rspec
. يستخدمون tmux
لقيادة محطة زائفة، وإرسال ضغطات مفاتيح محاكاة وتقديم تأكيدات على محتوى المحطة.
ملفات الاختبار موجودة في spec/
. لإجراء الاختبارات، قم بتشغيل make test
. لإجراء اختبار محدد، قم بتشغيل TESTS=spec/some_spec.rb make test
. يمكنك أيضًا تحديد ثنائي zsh
لاستخدامه عن طريق تعيين متغير البيئة TEST_ZSH_BIN
(على سبيل المثال: TEST_ZSH_BIN=/bin/zsh make test
).
من الممكن إجراء الاختبارات لأي إصدار مدعوم من zsh في صورة Docker عن طريق إنشاء صورة من ملف Dockerfile المتوفر. لإنشاء صورة عامل الإرساء لإصدار محدد من zsh (حيث يتم استبدال <version>
أدناه بمحتويات سطر من ملف ZSH_VERSIONS
)، قم بتشغيل:
docker build --build-arg TEST_ZSH_VERSION= < version > -t zsh-autosuggestions-test .
بعد بناء الصورة، قم بإجراء الاختبارات عبر:
docker run -it -v $PWD :/zsh-autosuggestions zsh-autosuggestions-test make test
هذا المشروع مرخص بموجب ترخيص MIT. للحصول على النص الكامل للترخيص، راجع ملف الترخيص.