.TH "ZSHCOMPWID" "1" "July 12, 2026" "zsh 5\&.9\&.2" .SH "نام (NAME)" zshcompwid \- ویجت‌های تکمیل zsh .\" Yodl file: Zsh/compwid.yo .SH "توضیحات (DESCRIPTION)" سازوکار تکمیل برنامه‌پذیر پوسته را می‌توان به دو روش دستکاری کرد؛ در اینجا ویژگی‌های سطح پایینی که از سازوکار جدیدترِ مبتنی بر تابع پشتیبانی می‌کنند، تعریف شده‌اند\&. مجموعهٔ کاملی از توابع پوسته بر پایهٔ این ویژگی‌ها در \fIzshcompsys\fP(1) شرح داده شده است، و کاربرانی که علاقه‌ای به افزودن به این سیستم (یا احتمالاً نوشتن سیستم اختصاصی خود \-\- به مدخل لغت‌نامه برای `hubris\&' مراجعه کنید) ندارند، باید از این بخش صرف‌نظر کنند\&. سیستم قدیمی‌ترِ مبتنی بر دستور توکار \fBcompctl\fP در \fIzshcompctl\fP(1) توصیف شده است\&. .PP ویجت‌های تکمیل توسط گزینهٔ \fB\-C\fP برای دستور توکار \fBzle\fP که توسط ماژول \fBzsh/zle\fP ارائه می‌شود تعریف می‌گردند (به \fIzshzle\fP(1) مراجعه کنید)\&. برای نمونه، .PP .RS .nf \fBzle \-C complete expand\-or\-complete completer\fP .fi .RE .PP ویجتی به نام `\fBcomplete\fP\&' را تعریف می‌کند\&. آرگومان دوم نام یکی از ویجت‌های توکاری است که تکمیل‌ها را مدیریت می‌کنند: \fBcomplete\-word\fP، \fBexpand\-or\-complete\fP، \fBexpand\-or\-complete\-prefix\fP، \fBmenu\-complete\fP، \fBmenu\-expand\-or\-complete\fP، \fBreverse\-menu\-complete\fP، \fBlist\-choices\fP، یا \fBdelete\-char\-or\-list\fP\&. توجه داشته باشید که این سازوکار حتی در صورتی که کلید اتصال ویجت مربوطه مجدداً مقید شده باشد نیز کار خواهد کرد\&. .PP هنگامی که این ویجت تازه‌تعریف‌شده با استفاده از دستور توکار \fBbindkey\fP تعریف‌شده در ماژول \fBzsh/zle\fP به یک کلید متصل شود (به \fIzshzle\fP(1) مراجعه کنید)، فشردن آن کلید، تابع پوستهٔ `\fBcompleter\fP\&' را فراخوانی خواهد کرد\&. این تابع وظیفه دارد با استفاده از دستورهای توکار شرح‌داده‌شده در ادامه، تطابق‌های تکمیل را تولید کند\&. همانند سایر ویجت‌های ZLE، این تابع با ورودی استاندارد بسته فراخوانی می‌شود\&. .PP به‌محض بازگشت تابع، کد تکمیل مجدداً کنترل را به دست می‌گیرد و با تطابق‌ها همانند ویجت توکارِ مشخص‌شده رفتار می‌کند، که در این حالت \fBexpand\-or\-complete\fP است\&. .PP .PP .SH "پارامترهای ویژهٔ تکمیل (COMPLETION SPECIAL PARAMETERS)" .PP پارامترهای \fBZLE_REMOVE_SUFFIX_CHARS\fP و \fBZLE_SPACE_SUFFIX_CHARS\fP توسط سازوکار تکمیل استفاده می‌شوند، اما ویژه نیستند\&. به بخش \fIParameters Used By The Shell\fP در \fIzshparam\fP(1) مراجعه کنید\&. .PP درون ویجت‌های تکمیل و هر تابعی که از درون آن‌ها فراخوانی شود، برخی پارامترها دارای معنای ویژه‌ای هستند؛ در خارج از این توابع، آن‌ها به‌هیچ‌وجه برای پوسته ویژه نیستند\&. این پارامترها برای انتقال اطلاعات بین کد تکمیل و ویجت تکمیل استفاده می‌شوند\&. برخی از دستورهای توکار و کدهای شرطی، مقادیر جاری این پارامترها را استفاده کرده یا تغییر می‌دهند\&. هر مقدارِ از پیش موجود در طول اجرای ویجت‌های تکمیل پنهان خواهد شد؛ به‌جز \fBcompstate\fP، پارامترها در هر خروج از تابع (شامل فراخوانی‌های تودرتوی توابع از درون ویجت تکمیل) به مقادیری که هنگام ورود به تابع داشتند بازنشانی می‌شوند\&. .PP .PD 0 .TP .PD \fBCURRENT\fP شمارهٔ کلمهٔ جاری است؛ یعنی کلمه‌ای در آرایهٔ \fBwords\fP که مکان‌نما هم‌اکنون روی آن قرار دارد\&. توجه داشته باشید که این مقدار تنها در صورتی درست است که گزینهٔ \fBksharrays\fP تنظیم نشده باشد\&. .TP \fBIPREFIX\fP در ابتدا روی یک رشتهٔ خالی تنظیم می‌شود\&. این پارامتر مانند \fBPREFIX\fP عمل می‌کند؛ حاوی رشته‌ای است که پیش از رشتهٔ موجود در \fBPREFIX\fP می‌آید و بخشی از فهرست تطابق‌ها در نظر گرفته نمی‌شود\&. به‌طور معمول، رشته‌ای از ابتدای \fBPREFIX\fP به انتهای \fBIPREFIX\fP منتقل می‌شود، برای نمونه: .RS .PP .RS .nf \fBIPREFIX=${PREFIX%%\e=*}= PREFIX=${PREFIX#*=}\fP .fi .RE .PP باعث می‌شود بخشی از پیشوند تا و شامل اولین علامت مساوی، به‌عنوان بخشی از رشتهٔ تطابق‌یافته در نظر گرفته نشود\&. این کار می‌تواند به‌صورت خودکار توسط دستور توکار \fBcompset\fP انجام شود، پایین‌تر را ببینید\&. .RE .TP \fBISUFFIX\fP مانند \fBIPREFIX\fP، اما برای پسوندی است که نباید بخشی از تطابق‌ها در نظر گرفته شود؛ توجه داشته باشید که رشتهٔ \fBISUFFIX\fP پس از رشتهٔ \fBSUFFIX\fP می‌آید\&. .TP \fBPREFIX\fP در ابتدا روی بخشی از کلمهٔ جاری از ابتدای کلمه تا موقعیت مکان‌نما تنظیم می‌شود؛ ممکن است برای ارائهٔ یک پیشوند مشترک برای همهٔ تطابق‌ها تغییر داده شود\&. .TP \fBQIPREFIX\fP این پارامتر فقط‌خواندنی است و شامل رشتهٔ نقل‌قول‌شده تا کلمهٔ در حال تکمیل است\&. برای نمونه هنگام تکمیل `\fB"foo\fP\&'، این پارامتر حاوی گیومه دوتایی (double quote) است\&. اگر از گزینهٔ \fB\-q\fP در \fBcompset\fP استفاده شود (پایین‌تر را ببینید)، و رشتهٔ اصلی `\fB"foo bar\fP\&' بوده و مکان‌نما روی `\fBbar\fP\&' باشد، این پارامتر شامل `\fB"foo \fP' خواهد بود\&. .TP \fBQISUFFIX\fP مانند \fBQIPREFIX\fP، اما حاوی پسوند است\&. .TP \fBSUFFIX\fP در ابتدا روی بخشی از کلمهٔ جاری از موقعیت مکان‌نما تا انتها تنظیم می‌شود؛ ممکن است برای ارائهٔ یک پسوند مشترک برای همهٔ تطابق‌ها تغییر داده شود\&. بیشترین کاربرد آن زمانی است که گزینهٔ \fBCOMPLETE_IN_WORD\fP تنظیم شده باشد، زیرا در غیر این صورت کل کلمه در خط فرمان به‌عنوان یک پیشوند در نظر گرفته می‌شود\&. .TP \fBcompstate\fP یک آرایهٔ انجمنی با کلیدها و مقادیر گوناگون است که کد تکمیل از آن برای تبادل اطلاعات با ویجت تکمیل استفاده می‌کند\&. کلیدها عبارتند از: .RS .PP .PD 0 .TP .PD \fBall_quotes\fP گزینهٔ \fB\-q\fP از دستور توکار \fBcompset\fP (پایین‌تر را ببینید) اجازه می‌دهد یک رشتهٔ نقل‌قول‌شده به کلمات جداگانه شکسته شود؛ اگر مکان‌نما روی یکی از آن کلمات باشد، آن کلمه تکمیل خواهد شد و احتمالاً `\fBcompset \-q\fP\&' را به‌صورت بازگشتی فراخوانی می‌کند\&. با این کلید می‌توان نوع رشته‌های نقل‌قول‌شده‌ای را که در حال حاضر به این روش به بخش‌هایی تقسیم شده‌اند بررسی کرد\&. مقدار آن شامل یک نویسه به ازای هر سطح نقل‌قول است\&. این نویسه‌ها عبارتند از یک نقل‌قول تکی یا نقل‌قول دوتایی برای رشته‌های نقل‌قول‌شده با این نویسه‌ها، یک علامت دلار برای رشته‌های نقل‌قول‌شده با \fB$\&'\fP\fI\&.\&.\&.\fP\fB'\fP و یک بک‌اسلش برای رشته‌هایی که با نویسهٔ نقل‌قول شروع نمی‌شوند\&. اولین نویسه در مقدار همیشه متناظر با درونی‌ترین سطح نقل‌قول است\&. .TP \fBcontext\fP توسط کد تکمیل روی بافت کلی (context) که تکمیل در آن انجام می‌شود تنظیم خواهد شد\&. مقادیر ممکن عبارتند از: .RS .PP .PD 0 .TP .PD \fBarray_value\fP هنگام تکمیل درون مقدار یک انتساب پارامتر آرایه‌ای؛ در این حالت آرایهٔ \fBwords\fP شامل کلمات داخل پرانتز است\&. .TP \fBbrace_parameter\fP هنگام تکمیل نام یک پارامتر در یک بسط پارامتر که با \fB${\fP آغاز می‌شود\&. این بافت همچنین هنگام تکمیل پرچم‌های پارامتر پس از \fB${(\fP تنظیم خواهد شد؛ آرگومان کامل خط فرمان ارائه می‌شود و گرداننده باید مقدار در حال تکمیل را بررسی کند تا از این موضوع اطمینان یابد\&. .TP \fBassign_parameter\fP هنگام تکمیل نام یک پارامتر در یک انتساب پارامتر\&. .TP \fBcommand\fP هنگام تکمیل برای یک دستور عادی (چه در موقعیت دستور و چه برای آرگومانی از دستور)\&. .TP \fBcondition\fP هنگام تکمیل درون عبارت شرطی `\fB[[\fP\&.\&.\&.\fB]]\fP\&'؛ در این حالت آرایهٔ \fBwords\fP فقط شامل کلمات درون عبارت شرطی است\&. .TP \fBmath\fP هنگام تکمیل در یک محیط ریاضی مانند ساختار `\fB((\fP\&.\&.\&.\fB))\fP\&'\&. .TP \fBparameter\fP هنگام تکمیل نام یک پارامتر در بسط پارامتری که با \fB$\fP شروع می‌شود ولی با \fB${\fP شروع نمی‌شود\&. .TP \fBredirect\fP هنگام تکمیل پس از یک عملگر تغییر مسیر\&. .TP \fBsubscript\fP هنگام تکمیل درون یک اندیس پارامتر\&. .TP \fBvalue\fP هنگام تکمیل مقدار یک انتساب پارامتر\&. .RE .TP \fBexact\fP رفتار را هنگام تنظیم گزینهٔ \fBREC_EXACT\fP کنترل می‌کند\&. اگر یک تطابق دقیق پذیرفته شود روی \fBaccept\fP تنظیم خواهد شد، و در غیر این صورت تنظیم‌نشده خواهد ماند\&. .RS .PP اگر زمانی که حداقل یک تطابق برابر با رشتهٔ موجود در خط تولید شده بود تنظیم شده باشد، آن تطابق پذیرفته می‌شود\&. .RE .TP \fBexact_string\fP رشتهٔ مربوط به یک تطابق دقیق در صورت یافت شدن، و در غیر این صورت تنظیم‌نشده\&..TP \fBignored\fP تعداد کامل‌سازی‌هایی که نادیده گرفته شدند زیرا با یکی از الگوهای ارائه‌شده با گزینهٔ \fB\-F\fP به دستور توکار \fBcompadd\fP مطابقت داشتند\&. .TP \fBinsert\fP نحوهٔ درج شدن یک تطابق در خط فرمان را کنترل می‌کند\&. هنگام ورود به تابع ابزارک، اگر مقداردهی نشده باشد، خط فرمان نباید تغییر کند؛ اگر روی \fBunambiguous\fP تنظیم شده باشد، هرگونه پیشوند مشترک بین تمام تطابق‌ها درج خواهد شد؛ اگر روی \fBautomenu\-unambiguous\fP تنظیم شود، پیشوند مشترک درج شده و فراخوانی بعدی کد کامل‌سازی ممکن است کامل‌سازی منویی را آغاز کند (به دلیل تنظیم بودن گزینهٔ \fBAUTO_MENU\fP)؛ اگر روی \fBmenu\fP یا \fBautomenu\fP تنظیم شود، کامل‌سازی منویی برای تطابق‌های تولیدشدهٔ فعلی آغاز خواهد شد (در حالت دوم، این اتفاق به دلیل تنظیم بودن گزینهٔ \fBAUTO_MENU\fP رخ می‌دهد)\&. همچنین این مقدار می‌تواند حاوی رشتهٔ `\fBtab\fP\&' باشد، در صورتی که کد کامل‌سازی در حالت عادی واقعاً عمل کامل‌سازی را انجام ندهد و صرفاً نویسهٔ TAB را درج کند\&. .RS .PP هنگام خروج می‌توان آن را روی هر یک از مقادیر بالا (که تنظیم آن روی رشتهٔ خالی همانند لغو مقداردهی آن است) یا روی یک عدد تنظیم کرد، که در این صورت تطابقی که شماره‌اش مشخص شده است در خط فرمان درج خواهد شد\&. اعداد منفی از آخرین تطابق رو به عقب شمارش می‌شوند (به‌طوری که `\fB\-1\fP\&' آخرین تطابق را انتخاب می‌کند) و مقادیر خارج از محدوده دور می‌زنند، به‌گونه‌ای که مقدار صفر آخرین تطابق و مقداری به اندازهٔ یک واحد بیشتر از بیشینه، اولین تطابق را انتخاب می‌کند\&. مگر این‌که مقدار این کلید با یک فاصله پایان یابد، تطابق مانند کامل‌سازی منویی درج می‌شود، یعنی بدون افزودن خودکار فاصله به انتهای آن\&. .PP هر دو مقدار \fBmenu\fP و \fBautomenu\fP می‌توانند شمارهٔ تطابق مورد نظر برای درج را پس از دونقطه مشخص کنند\&. برای مثال، `\fBmenu:2\fP\&' به این معناست که کامل‌سازی منویی، با شروع از دومین تطابق آغاز شود\&. .PP توجه داشته باشید مقداری که شامل زیررشتهٔ `\fBtab\fP\&' باشد، باعث می‌شود تطابق‌های تولیدشده نادیده گرفته شوند و فقط TAB درج شود\&. .PP در نهایت، می‌تواند روی \fBall\fP نیز تنظیم شود، که باعث می‌شود تمام تطابق‌های تولیدشده در خط درج شوند\&. .RE .TP \fBinsert_positions\fP هنگامی که سامانهٔ کامل‌سازی یک رشتهٔ بدون ابهام را در خط درج می‌کند، ممکن است چندین موقعیت وجود داشته باشد که در آن‌ها نویسه‌هایی جا افتاده باشند یا نویسهٔ درج‌شده با دست‌کم یکی از تطابق‌ها تفاوت داشته باشد\&. مقدار این کلید شامل فهرستی جداشده با دونقطه از تمام این موقعیت‌ها به عنوان اندیس‌هایی در خط فرمان است\&. .TP \fBlast_prompt\fP اگر این مقدار به ازای هر تطابق اضافه‌شده روی یک رشتهٔ غیرخالی تنظیم شود، کد کامل‌سازی پس از نمایش فهرست کامل‌سازی‌ها، مکان‌نما را به اعلان قبلی بازمی‌گرداند\&. در ابتدا، این کلید با توجه به گزینهٔ \fBALWAYS_LAST_PROMPT\fP تنظیم یا لغو می‌شود\&. .TP \fBlist\fP این کلید مشخص می‌کند که آیا فهرست تطابق‌ها نمایش داده شود یا چگونه نمایش داده شود\&. اگر مقداردهی نشده یا خالی باشد، هرگز فهرست نخواهند شد؛ اگر مقدار آن با \fBlist\fP شروع شود، همیشه فهرست می‌شوند؛ اگر با \fBautolist\fP یا \fBambiguous\fP شروع شود، زمانی فهرست می‌شوند که گزینه‌های \fBAUTO_LIST\fP یا \fBLIST_AMBIGUOUS\fP به طور معمول باعث نمایش آن‌ها شوند\&. .RS .PP اگر زیررشتهٔ \fBforce\fP در این مقدار بیاید، باعث می‌شود فهرست حتی در صورت وجود تنها یک تطابق نمایش داده شود\&. در حالت عادی، فهرست فقط در صورت وجود حداقل دو تطابق نمایش داده می‌شود\&. .PP اگر گزینهٔ \fBLIST_PACKED\fP تنظیم شده باشد، این مقدار حاوی زیررشتهٔ \fBpacked\fP خواهد بود\&. اگر این زیررشته برای تمام تطابق‌های اضافه‌شده به یک گروه داده شود، آن گروه رفتار \fBLIST_PACKED\fP را نشان خواهد داد\&. همین رفتار برای گزینهٔ \fBLIST_ROWS_FIRST\fP با زیررشتهٔ \fBrows\fP انجام می‌شود\&. .PP در نهایت، اگر مقدار حاوی رشتهٔ \fBexplanations\fP باشد، فقط رشته‌های توضیحی (در صورت وجود) فهرست خواهند شد، و اگر حاوی \fBmessages\fP باشد، فقط پیام‌ها (اضافه‌شده با گزینهٔ \fB\-x\fP از \fBcompadd\fP) فهرست می‌شوند\&. اگر حاوی هر دو رشتهٔ \fBexplanations\fP و \fBmessages\fP باشد، هر دو نوع رشته‌های توضیحی فهرست خواهند شد\&. این کلید هنگام ورود به یک ابزارک کامل‌سازی به درستی تنظیم می‌شود و می‌تواند در آنجا تغییر کند\&. .RE .TP \fBlist_lines\fP تعداد خطوطی را که برای نمایش فهرست کاملِ کامل‌سازی‌ها نیاز است مشخص می‌کند\&. توجه داشته باشید که برای محاسبهٔ تعداد کل خطوط جهت نمایش، باید تعداد خطوط مورد نیاز برای خط فرمان را به این مقدار اضافه کنید، که به عنوان مقدار پارامتر ویژهٔ \fBBUFFERLINES\fP در دسترس است\&. .TP \fBlist_max\fP در ابتدا روی مقدار پارامتر \fBLISTMAX\fP تنظیم می‌شود\&. می‌تواند روی هر مقدار دیگری نیز تنظیم گردد؛ هنگام خروج ابزارک، این مقدار به همان شیوهٔ مقدار \fBLISTMAX\fP استفاده خواهد شد\&. .TP \fBnmatches\fP تعداد تطابق‌هایی که تاکنون توسط کد کامل‌سازی اضافه شده است\&. .TP \fBold_insert\fP هنگام ورود به ابزارک، روی شمارهٔ تطابقی از یک فهرست قدیمی کامل‌سازی‌ها که هم‌اکنون در خط فرمان درج شده است، تنظیم خواهد شد\&. اگر هیچ تطابقی درج نشده باشد، این کلید مقداردهی نشده است\&. .RS .PP مانند \fBold_list\fP، مقدار این کلید فقط در صورتی استفاده می‌شود که برابر رشتهٔ \fBkeep\fP باشد\&. اگر این کلید توسط ابزارک روی این مقدار تنظیم شده باشد و تطابق قدیمی در خط فرمان درج شده باشد، این تطابق حفظ خواهد شد و اگر مقدار کلید \fBinsert\fP مشخص کند که تطابق دیگری باید درج شود، این مورد پس از تطابق قدیمی درج خواهد شد\&. .RE .TP \fBold_list\fP اگر در زمان فراخوانی ابزارک، هنوز فهرست معتبری از کامل‌سازی‌ها از یک کامل‌سازی قبلی وجود داشته باشد، روی \fByes\fP تنظیم می‌شود\&. این حالت معمولاً تنها در صورتی رخ می‌دهد که عملیات ویرایشی قبلی یک ابزارک کامل‌سازی یا یکی از توابع توکار کامل‌سازی بوده باشد\&. اگر فهرست معتبری وجود داشته باشد و هم‌اکنون روی صفحه نیز نمایش داده شده باشد، مقدار این کلید \fBshown\fP خواهد بود\&. .RS .PP پس از خروج ابزارک، مقدار این کلید فقط در صورتی استفاده می‌شود که روی \fBkeep\fP تنظیم شده باشد\&. در این حالت، کد کامل‌سازی همچنان از این فهرست قدیمی استفاده خواهد کرد\&. اگر ابزارک تطابق‌های جدیدی تولید کرده باشد، از آن‌ها استفاده نخواهد شد\&. .RE .TP \fBparameter\fP نام پارامتر هنگام کامل‌سازی درون یک زیرنویس (subscript) یا در مقدار یک انتساب پارامتر\&. .TP \fBpattern_insert\fP در حالت عادی روی \fBmenu\fP تنظیم است، که مشخص می‌کند هر زمان مجموعه‌ای از تطابق‌ها با استفاده از \fBpattern_match\fP (به زیر نگاه کنید) تولید شد، کامل‌سازی منویی استفاده خواهد شد\&. اگر توسط کاربر روی هر رشتهٔ غیرخالی دیگری تنظیم شود و کامل‌سازی منویی توسط سایر تنظیمات گزینه‌ها انتخاب نشده باشد، کد به جای آن، مانند کامل‌سازی عادی، هرگونه پیشوند مشترک برای تطابق‌های تولیدشده را درج می‌کند\&. .TP \fBpattern_match\fP رفتار ارائه‌شده توسط گزینهٔ \fBGLOB_COMPLETE\fP را به صورت محلی کنترل می‌کند\&. در ابتدا فقط و فقط اگر این گزینه تنظیم شده باشد، روی `\fB*\fP\&' تنظیم می‌شود\&. ابزارک کامل‌سازی می‌تواند آن را روی این مقدار، یک رشتهٔ خالی (که همان اثر لغو مقداردهی را دارد)، یا هر رشتهٔ غیرخالی دیگری تنظیم کند\&. اگر غیرخالی باشد، فرانویسه‌های (metacharacters) خارج از نقل‌قول در خط فرمان به عنوان الگو در نظر گرفته می‌شوند؛ اگر `\fB*\fP\&' باشد، علاوه بر این یک نویسهٔ عام `\fB*\fP\&' در موقعیت مکان‌نما فرض می‌شود؛ اگر خالی باشد یا مقداردهی نشده باشد، با فرانویسه‌ها به صورت نویسهٔ تحت‌اللفظی رفتار خواهد شد\&. .RS .PP توجه داشته باشید که اگر این کلید روی یک رشتهٔ غیرخالی تنظیم شده باشد، مشخصات تطابق ارائه‌شده به دستور توکار \fBcompadd\fP استفاده نمی‌شوند\&. .RE .TP \fBquote\fP هنگام کامل‌سازی درون نقل‌قول‌ها، این کلید حاوی نویسهٔ نقل‌قول است (یعنی تک‌نقل‌قول، جفت‌نقل‌قول، یا بَک‌تیک)\&. در غیر این صورت مقداردهی نشده است\&. .TP \fBquoting\fP هنگام کامل‌سازی درون تک‌نقل‌قول، روی رشتهٔ \fBsingle\fP تنظیم می‌شود؛ درون جفت‌نقل‌قول، روی رشتهٔ \fBdouble\fP؛ و درون بَک‌تیک، روی رشتهٔ \fBbacktick\fP\&. در غیر این صورت مقداردهی نشده است\&. .TP \fBredirect\fP عملگر تغییر مسیر هنگام کامل‌سازی در موقعیت تغییر مسیر، یعنی یکی از \fB<\fP، \fB>\fP و غیره\&. .TP \fBrestore\fP پیش از ورود به یک تابع روی \fBauto\fP تنظیم می‌شود، که پارامترهای ویژهٔ ذکرشده در بالا (\fBwords\fP، \fBCURRENT\fP، \fBPREFIX\fP، \fBIPREFIX\fP، \fBSUFFIX\fP و \fBISUFFIX\fP) را وادار می‌کند هنگام خروج تابع به مقادیر قبلی خود بازگردانده شوند\&. اگر تابعی مقدار آن را لغو کند یا آن را روی هر رشتهٔ دیگری تنظیم نماید، آن‌ها بازگردانده نخواهند شد\&. .TP \fBto_end\fP شرایطی را مشخص می‌کند که در آن‌ها هنگام درج یک تطابق، مکان‌نما به انتهای رشته منتقل می‌شود\&. هنگام ورود به یک تابع ابزارک، در صورتی که این اتفاق هنگام درج یک تطابق منفردِ بدون ابهام رخ دهد، ممکن است \fBsingle\fP باشد، یا اگر هر زمان که تطابقی درج شد رخ دهد (برای مثال، توسط کامل‌سازی منویی؛ احتمالاً این اثر گزینهٔ \fBALWAYS_TO_END\fP است)، ممکن است \fBmatch\fP باشد\&. .RS .PP هنگام خروج، ممکن است مانند بالا روی \fBsingle\fP تنظیم شود\&. همچنین می‌تواند روی \fBalways\fP یا روی رشتهٔ خالی تنظیم شده یا مقداردهی نشده باشد؛ در این حالت‌ها مکان‌نما به ترتیب همواره یا هرگز به انتهای رشته منتقل می‌شود\&. هر رشتهٔ دیگری به عنوان \fBmatch\fP در نظر گرفته می‌شود\&. .RE .TP \fBunambiguous\fP این کلید فقط‌خواندنی است و همیشه روی پیشوند مشترک (بدون ابهام) که کد کامل‌سازی برای تمام تطابق‌های اضافه‌شده تا این لحظه تولید کرده است تنظیم خواهد شد\&. .TP \fBunambiguous_cursor\fP موقعیتی را نشان می‌دهد که اگر پیشوند مشترک موجود در کلید \fBunambiguous\fP درج می‌شد، مکان‌نما نسبت به مقدار آن کلید در آنجا قرار می‌گرفت\&. مکان‌نما قبل از نویسه‌ای قرار می‌گیرد که اندیس آن توسط این کلید مشخص شده است\&. .TP \fBunambiguous_positions\fP حاوی تمام موقعیت‌هایی است که در آن‌ها نویسه‌ها در رشتهٔ بدون ابهام جا افتاده‌اند، یا نویسهٔ درج‌شده با دست‌کم یکی از تطابق‌ها تفاوت دارد\&. این موقعیت‌ها به عنوان اندیس‌هایی در رشته‌ای که مقدار کلید \fBunambiguous\fP مشخص کرده است، ارائه می‌شوند\&..TP \fBvared\fP اگر هنگام ویرایش یک سطر با استفاده از دستور توکار \fBvared\fP کامل‌سازی فراخوانی شود، مقدار این کلید روی نام پارامتری تنظیم می‌شود که به‌عنوان آرگومان به \fBvared\fP داده شده است\&. این کلید تنها در زمانی که یک دستور \fBvared\fP فعال باشد، تنظیم می‌شود\&. .RE .TP \fBwords\fP این آرایه شامل واژه‌های موجود در سطر فرمانی است که در حال حاضر ویرایش می‌شود\&. .PP .SH "دستورهای توکار کامل‌سازی (COMPLETION BUILTIN COMMANDS)" .PD 0 .TP .PD 0 \fBcompadd \fP[ \fB\-akqQfenUl12C\fP ] [ \fB\-F\fP \fIarray\fP ] .TP .PD 0 \fB \fP[\fB\-P\fP \fIprefix\fP ] [ \fB\-S\fP \fIsuffix\fP ] .TP .PD 0 \fB \fP[\fB\-p\fP \fIhidden\-prefix\fP ] [ \fB\-s\fP \fIhidden\-suffix\fP ] .TP .PD 0 \fB \fP[\fB\-i\fP \fIignored\-prefix\fP ] [ \fB\-I\fP \fIignored\-suffix\fP ] .TP .PD 0 \fB \fP[\fB\-W\fP \fIfile\-prefix\fP ] [ \fB\-d\fP \fIarray\fP ] .TP .PD 0 \fB \fP[\fB\-J\fP \fIgroup\-name\fP ] [ \fB\-X\fP \fIexplanation\fP ] [ \fB\-x\fP \fImessage\fP ] .TP .PD 0 \fB \fP[\fB\-V\fP \fIgroup\-name\fP ] [ \fB\-o\fP [ \fIorder\fP ] ] .TP .PD 0 \fB \fP[\fB\-r\fP \fIremove\-chars\fP ] [ \fB\-R\fP \fIremove\-func\fP ] .TP .PD 0 \fB \fP[\fB\-D\fP \fIarray\fP ] [ \fB\-O\fP \fIarray\fP ] [ \fB\-A\fP \fIarray\fP ] .TP .PD 0 \fB \fP[\fB\-E\fP \fInumber\fP ] .TP .PD \fB \fP[\fB\-M\fP \fImatch\-spec\fP ] [ \fB\-\fP\fB\-\fP ] [ \fIcompletions\fP \&.\&.\&. ] .RS .PP از این دستور توکار می‌توان برای افزودن مستقیم تطابق‌ها و واپایش تمام اطلاعاتی که کد کامل‌سازی به همراه هر کامل‌سازی احتمالی ذخیره می‌کند، استفاده کرد\&. وضعیت خروج در صورتی که دست‌کم یک تطابق افزوده شده باشد صفر، و در صورتی که هیچ تطابقی افزوده نشده باشد غیرصفر است\&. .PP کد کامل‌سازی هر تطابق را به ترتیب به هفت فیلد تقسیم می‌کند: .PP .RS .nf \fI\fP .fi .RE .PP فیلد نخست یک پیشوند نادیده‌گرفته‌شده از سطر فرمان است؛ یعنی محتوای پارامتر \fBIPREFIX\fP به همراه رشته‌ای که با گزینهٔ \fB\-i\fP مشخص شده است\&. با گزینهٔ \fB\-U\fP، تنها رشتهٔ دریافتی از گزینهٔ \fB\-i\fP استفاده می‌شود\&. فیلد \fI\fP یک رشته پیشوند اختیاری است که با گزینهٔ \fB\-P\fP داده می‌شود\&. فیلد \fI\fP رشته‌ای است که بخشی از تطابق در نظر گرفته می‌شود اما نباید هنگام فهرست کردن کامل‌سازی‌ها نمایش داده شود، و با گزینهٔ \fB\-p\fP مشخص می‌گردد؛ برای نمونه، توابعی که تولید نام فایل را انجام می‌دهند می‌توانند پیشوند مسیر مشترک را به این روش تعیین کنند\&. فیلد \fI\fP بخشی از تطابق است که باید در فهرست تطابق‌های نمایش‌داده‌شده به کاربر ظاهر شود\&. پسوندهای \fI\fP، \fI\fP و \fI\fP متناظر با پیشوندهای \fI\fP، \fI\fP و \fI\fP هستند و به ترتیب با گزینه‌های \fB\-s\fP، \fB\-S\fP و \fB\-I\fP تعیین می‌شوند\&. .PP پرچم‌های پشتیبانی‌شده عبارتند از: .PP .PD 0 .TP .PD \fB\-P\fP \fIprefix\fP رشته‌ای را مشخص می‌کند که باید پیش از هر تطابق درج شود\&. رشتهٔ ارائه‌شده بخشی از تطابق محسوب نمی‌شود و هنگام درج رشته، هیچ‌یک از نویسه‌های ویژهٔ پوسته (metacharacters) در آن نقل‌قول نخواهند شد\&. .TP \fB\-S\fP \fIsuffix\fP مشابه \fB\-P\fP، اما رشته‌ای را مشخص می‌کند که باید پس از هر تطابق درج شود\&. .TP \fB\-p\fP \fIhidden\-prefix\fP رشته‌ای را مشخص می‌کند که باید پیش از هر تطابق درج شود اما نباید در فهرست تطابق‌ها ظاهر گردد\&. مگر در حالتی که گزینهٔ \fB\-U\fP داده شده باشد، این رشته باید به‌صورت بخشی از رشته در سطر فرمان تطبیق داده شود\&. .TP \fB\-s\fP \fIhidden\-suffix\fP مشابه «\fB\-p\fP\&»، اما رشته‌ای را برای درج پس از هر تطابق مشخص می‌کند\&. .TP \fB\-i\fP \fIignored\-prefix\fP رشته‌ای را مشخص می‌کند تا دقیقاً پیش از هر رشتهٔ ارائه‌شده با گزینهٔ «\fB\-P\fP\&» درج شود\&. بدون «\fB\-P\fP»، این رشته پیش از رشتهٔ ارائه‌شده با «\fB\-p\fP\&» یا مستقیماً پیش از هر تطابق درج می‌شود\&. .TP \fB\-I\fP \fIignored\-suffix\fP مشابه \fB\-i\fP، اما یک پسوند نادیده‌گرفته‌شده را مشخص می‌کند\&. .TP \fB\-a\fP با این پرچم، \fIcompletions\fP به‌عنوان نام آرایه‌ها در نظر گرفته می‌شوند و کامل‌سازی‌های واقعی مقادیر آن‌ها خواهند بود\&. در صورتی که تنها به برخی از عناصر آرایه‌ها نیاز باشد، \fIcompletions\fP می‌توانند شامل اندیس‌ها (subscripts) نیز باشند، مانند «\fBfoo[2,\-1]\fP\&»\&. .TP \fB\-k\fP با این پرچم، \fIcompletions\fP به‌عنوان نام آرایه‌های انجمنی در نظر گرفته می‌شوند و کامل‌سازی‌های واقعی کلیدهای آن‌ها هستند\&. همانند \fB\-a\fP، این \fIwords\fP نیز می‌توانند شامل اندیس‌ها باشند، مانند «\fBfoo[(R)*bar*]\fP\&»\&. .TP \fB\-d\fP \fIarray\fP رشته‌های نمایشی را به ازای هر کامل‌سازی اضافه می‌کند\&. آرایهٔ \fIarray\fP باید به ازای هر \fIcompletion\fP ارائه‌شده، شامل یک عنصر باشد\&. کد کامل‌سازی سپس به‌جای نخستین \fIcompletion\fP، عنصر اول را نمایش می‌دهد و به همین ترتیب ادامه می‌یابد\&. آرایهٔ \fIarray\fP می‌تواند به‌عنوان نام یک پارامتر آرایه یا مستقیماً به‌صورت فهرستی از واژه‌ها با فاصله‌گذاری درون پرانتز داده شود\&. .RS .PP اگر تعداد رشته‌های نمایشی کمتر از \fIcompletions\fP باشد، کامل‌سازی‌های باقی‌مانده بدون تغییر نمایش داده می‌شوند و اگر تعداد رشته‌های نمایشی بیشتر از \fIcompletions\fP باشد، رشته‌های نمایشی اضافی بدون هشدار نادیده گرفته خواهند شد\&. .RE .TP \fB\-l\fP این گزینه تنها در صورت استفادهٔ هم‌زمان با گزینهٔ \fB\-d\fP تأثیرگذار است\&. در صورت تعیین آن، رشته‌های نمایشی در هر سطر یکی فهرست می‌شوند، نه این‌که در ستون‌ها چیده شوند\&. .TP \fB\-o\fP [ \fIorder\fP ] ترتیب مرتب‌سازی تطابق‌ها را واپایش می‌کند\&. مقدار \fIorder\fP فهرستی جداشده با کاما شامل مقادیر ممکن زیر است\&. این مقادیر را می‌توان به دو یا سه نویسهٔ آغازین آن‌ها مخفف کرد\&. توجه داشته باشید که ترتیب، بخشی از فضای نام گروه را تشکیل می‌دهد؛ بنابراین تطابق‌هایی با ترتیب‌های متفاوت در یک گروه قرار نخواهند گرفت\&. .RS .PP .PD 0 .TP .PD \fBmatch\fP در صورت مشخص شدن، ترتیب خروجی بر اساس رشته‌های تطابق تعیین می‌شود؛ در غیر این صورت بر اساس رشته‌های نمایشی (یعنی رشته‌های ارائه‌شده توسط گزینهٔ \fB\-d\fP) تعیین می‌گردد\&. اگر «\fB\-o\fP\&» مشخص شود اما آرگومان \fIorder\fP حذف گردد، این مقدار پیش‌فرض خواهد بود\&. .TP \fBnosort\fP مشخص می‌کند که \fIcompletions\fP از پیش مرتب شده‌اند و باید ترتیب آن‌ها حفظ شود\&. این مقدار تنها به‌تنهایی معنادار است و نمی‌توان آن را با هیچ مقدار دیگری ترکیب کرد\&. .TP \fBnumeric\fP اگر تطابق‌ها شامل اعداد باشند، آن‌ها را به‌جای روش الفبایی (lexicographical)، به‌صورت عددی مرتب می‌کند\&. .TP \fBreverse\fP با معکوس کردن ترتیب مرتب‌سازی، تطابق‌ها را وارونه می‌چیند\&. .RE .TP \fB\-J\fP \fIgroup\-name\fP نام گروهی را مشخص می‌کند که تطابق‌ها باید در آن ذخیره شوند\&. .TP \fB\-V\fP \fIgroup\-name\fP مشابه \fB\-J\fP اما یک گروه نامرتب را مشخص می‌کند\&. این گزینه هم‌ارز ترکیب \fB\-J\fP و \fB\-o nosort\fP است\&. .TP \fB\-1\fP در صورت ارائه همراه با گزینهٔ \fB\-V\fP، باعث می‌شود تنها موارد تکراری متوالی در گروه حذف شوند\&. در صورت ترکیب با گزینهٔ \fB\-J\fP، هیچ اثر قابل مشاهده‌ای ندارد\&. توجه داشته باشید که گروه‌های دارای این پرچم و گروه‌های بدون آن در فضاهای نام متفاوتی هستند\&. .TP \fB\-2\fP در صورت ارائه همراه با گزینهٔ \fB\-J\fP یا \fB\-V\fP، باعث می‌شود همهٔ موارد تکراری حفظ شوند\&. مجدداً، گروه‌های دارای این پرچم و بدون آن در فضاهای نام متفاوتی قرار دارند\&. .TP \fB\-X\fP \fIexplanation\fP رشتهٔ \fIexplanation\fP همراه با فهرست تطابق‌ها و بالای گروهی که در حال حاضر انتخاب شده است، چاپ می‌شود\&. .RS .PP درون \fIexplanation\fP، می‌توان از دنباله‌های زیر برای مشخص کردن ویژگی‌های خروجی استفاده کرد، همان‌طور که در بخش EXPANSION OF PROMPT SEQUENCES در \fIzshmisc\fP(1) توصیف شده است: «\fB%B\fP\&»، «\fB%S\fP»، «\fB%U\fP»، «\fB%F\fP»، «\fB%K\fP» و همتایان حروف کوچک آن‌ها، و همچنین «\fB%{\fP\&.\&.\&.\fB%}\fP\&»\&. «\fB%F\fP»، «\fB%K\fP» و «\fB%{\fP\&.\&.\&.\fB%}\fP\&» آرگومان‌ها را به همان شکل گسترش اعلان (prompt expansion) می‌پذیرند\&. (توجه داشته باشید که دنبالهٔ «\fB%G\fP\&» در دسترس نیست؛ در عوض باید از یک آرگومان برای «\fB%{\fP\&» استفاده شود\&.) دنبالهٔ «\fB%%\fP» یک «\fB%\fP\&» لفظی تولید می‌کند\&..PP این توالی‌ها اغلب توسط کاربران هنگام سفارشی‌سازی سبک \fBformat\fP به کار می‌روند (نگاه کنید به \fIzshcompsys\fP(1))، اما هنگام نوشتن توابع تکمیل نیز باید مد نظر قرار گیرند، چرا که ارسال توصیف‌هایی با نویسه‌های فرارنیافتهٔ «\fB%\fP\&» به توابع کمکی مانند \fB_arguments\fP و \fB_message\fP ممکن است نتایج غیرمنتظره‌ای ایجاد کند\&. اگر قرار است متنی دلخواه در یک توصیف ارسال شود، می‌توان آن را با عبارتی مانند \fB${my_str//\e%/%%}\fP گریز داد\&. .RE .TP \fB\-x\fP \fImessage\fP مانند \fB\-X\fP، اما \fImessage\fP حتی در صورت نبود هیچ تطابقی در گروه چاپ خواهد شد\&. .TP \fB\-q\fP پسوند ارائه‌شده با \fB\-S\fP به‌طور خودکار حذف خواهد شد اگر نویسهٔ بعدی تایپ‌شده یک فاصله باشد یا چیزی درج نکند، یا اگر پسوند تنها از یک نویسه تشکیل شده باشد و نویسهٔ بعدی تایپ‌شده همان نویسه باشد\&. .TP \fB\-r\fP \fIremove\-chars\fP این شکل همه‌کاره‌تری از گزینهٔ \fB\-q\fP است\&. پسوند ارائه‌شده با \fB\-S\fP یا ممیزی که به‌طور خودکار پس از تکمیل دایرکتوری‌ها افزوده می‌شود، در صورتی که نویسهٔ بعدی تایپ‌شده یکی از نویسه‌های ارائه‌شده در \fIremove\-chars\fP را درج کند، به‌طور خودکار حذف خواهد شد\&. این رشته به عنوان یک ردهٔ نویسه‌ای تجزیه می‌شود و توالی‌های بک‌اسلشِ مورد استفاده در دستور \fBprint\fP را تشخیص می‌دهد\&. برای نمونه، «\fB\-r "a\-z\et"\fP\&» در صورتی که نویسهٔ بعدی تایپ‌شده یک نویسهٔ کوچک یا TAB را درج کند پسوند را حذف می‌کند، و «\fB\-r "^0\-9"\fP\&» در صورتی که نویسهٔ بعدی تایپ‌شده هر چیزی به‌جز یک رقم باشد، پسوند را حذف می‌نماید\&. یک توالی بک‌اسلش اضافی نیز در این رشته قابل فهم است: «\fB\e\-\fP\&» نمایانگر تمام نویسه‌هایی است که هیچ چیزی درج نمی‌کنند\&. بنابراین «\fB\-S "=" \-q\fP\&» با «\fB\-S "=" \-r "= \et\en\e\-"\fP\&» یکسان است\&. .RS .PP این گزینه ممکن است بدون گزینهٔ \fB\-S\fP نیز استفاده شود؛ در این صورت با تایپ یکی از نویسه‌های موجود در فهرست، هر فاصلهٔ به‌طور خودکار اضافه‌شده حذف خواهد شد\&. .RE .TP \fB\-R\fP \fIremove\-func\fP این شکل دیگری از گزینهٔ \fB\-r\fP است\&. هنگامی که یک تطابق پذیرفته شد و یک پسوند درج گردید، تابع \fIremove\-func\fP پس از فشرده‌شدن و تایپ نویسهٔ بعدی فراخوانی خواهد شد\&. طول پسوند به عنوان یک آرگومان به آن فرستاده می‌شود و این تابع می‌تواند از پارامترهای ویژهٔ موجود در ویجت‌های معمولی (غیرتکمیلی) zle (نگاه کنید به \fIzshzle\fP(1)) برای تحلیل و تغییر خط فرمان استفاده کند\&. .TP \fB\-f\fP اگر این پرچم داده شود، همهٔ تطابق‌های ساخته‌شده از \fIcompletions\fP به عنوان نام فایل علامت‌گذاری می‌شوند\&. نیازی نیست که آن‌ها حتماً نام فایل‌های واقعی باشند، اما اگر باشند، و گزینهٔ \fBLIST_TYPES\fP تنظیم شده باشد، نویسه‌های توصیف‌کنندهٔ نوع فایل‌ها در فهرست‌های تکمیل نمایش داده خواهند شد\&. این کار همچنین باعث می‌شود هنگام تکمیل نام یک دایرکتوری، افزودن یک ممیز اجباری گردد\&. .TP \fB\-e\fP از این پرچم می‌توان برای اعلام به کد تکمیل استفاده کرد که تطابق‌های افزوده‌شده، نام پارامتر برای یک گسترش پارامتر هستند\&. این کار باعث می‌شود گزینه‌های \fBAUTO_PARAM_SLASH\fP و \fBAUTO_PARAM_KEYS\fP برای این تطابق‌ها اعمال شوند\&. .TP \fB\-W\fP \fIfile\-prefix\fP این رشته یک نام مسیر است که به همراه هر پیشوند مشخص‌شده توسط گزینهٔ \fB\-p\fP، به ابتدای هر تطابق اضافه می‌شود تا نام کامل فایل را برای آزمایش شکل دهد\&. بنابراین تنها در صورت ترکیب با پرچم \fB\-f\fP سودمند است، چرا که در غیر این صورت آزمایش‌ها انجام نخواهند شد\&. .TP \fB\-F\fP \fIarray\fP آرایه‌ای حاوی الگوها را مشخص می‌کند\&. مواردی از \fIcompletions\fP که با یکی از این الگوها مطابقت داشته باشند نادیده گرفته می‌شوند، یعنی به عنوان تطابق در نظر گرفته نمی‌شوند\&. .RS .PP این \fIarray\fP می‌تواند نام یک پارامتر آرایه‌ای یا فهرستی از الگوهای لفظی محصور در پرانتز و درون نقل‌قول باشد، مانند «\fB\-F "(*?\&.o *?\&.h)"\fP\&»\&. اگر نام یک آرایه داده شود، عناصر آن آرایه به عنوان الگوها در نظر گرفته می‌شوند\&. .RE .TP \fB\-Q\fP این پرچم به کد تکمیل دستور می‌دهد که هنگام درج تطابق‌ها در خط فرمان، هیچ‌کدام از نویسه‌های خاص (metacharacters) موجود در آن‌ها را درون نقل‌قول قرار ندهد\&. .TP \fB\-M\fP \fImatch\-spec\fP این گزینه مشخصات محلی تطابق را مطابق آنچه در زیر در بخش «Completion Matching Control» شرح داده شده است، تعیین می‌کند\&. این گزینه ممکن است بیش از یک بار مشخص شود\&. در این صورت، تمام \fImatch\-spec\fPهای ارائه‌شده با فاصله‌هایی در میانشان به هم متصل می‌شوند تا رشتهٔ مشخصات مورد استفاده را تشکیل دهند\&. توجه داشته باشید که آن‌ها تنها در صورتی استفاده خواهند شد که گزینهٔ \fB\-U\fP داده نشده باشد\&. .TP \fB\-n\fP مشخص می‌کند که \fIcompletions\fP دارای تطابق به مجموعهٔ تطابق‌ها اضافه شوند، اما برای کاربر فهرست نشوند\&. .TP \fB\-U\fP اگر این پرچم داده شود، تمام \fIcompletions\fP به مجموعهٔ تطابق‌ها اضافه می‌شوند و هیچ تطابق‌یابی توسط کد تکمیل انجام نخواهد شد\&. معمولاً این گزینه در توابعی به کار می‌رود که تطابق‌یابی را خودشان انجام می‌دهند\&. .TP \fB\-O\fP \fIarray\fP اگر این گزینه داده شود، \fIcompletions\fP به مجموعهٔ تطابق‌ها اضافه \fIنمی‌شوند\fP\&. در عوض، تطابق‌یابی طبق معمول انجام می‌گیرد و تمام مواردی از \fIcompletions\fP که مطابقت دارند، در پارامتر آرایه‌ای که نام آن در \fIarray\fP آمده است ذخیره خواهند شد\&. .TP \fB\-A\fP \fIarray\fP مانند گزینهٔ \fB\-O\fP است، با این تفاوت که به‌جای ذخیرهٔ مواردی از \fIcompletions\fP که مطابقت دارند در \fIarray\fP، رشته‌های تولیدشدهٔ داخلی توسط کد تکمیل ذخیره می‌شوند\&. برای نمونه، با یک مشخصهٔ تطابق «\fB\-M "L:|no="\fP\&»، کلمهٔ فعلی «\fBnof\fP» و \fIcompletions\fP برابر «\fBfoo\fP\&»، این گزینه رشتهٔ «\fBnofoo\fP\&» را در آرایه ذخیره می‌کند، در حالی که گزینهٔ \fB\-O\fP همان «\fBfoo\fP\&» ارائه‌شدهٔ اولیه را ذخیره خواهد کرد\&. .TP \fB\-D\fP \fIarray\fP همانند \fB\-O\fP، موارد \fIcompletions\fP به مجموعهٔ تطابق‌ها اضافه نمی‌شوند\&. در عوض، هر زمان که \fIn\fPاُمین \fIcompletion\fP مطابقت نداشته باشد، \fIn\fPاُمین عنصر از \fIarray\fP حذف می‌شود\&. عناصری که \fIcompletion\fP متناظر آن‌ها مطابقت دارد حفظ می‌شوند\&. این گزینه می‌تواند بیش از یک بار برای حذف عناصر از چندین آرایه استفاده شود\&. .TP \fB\-C\fP این گزینه یک تطابق ویژه اضافه می‌کند که هنگام درج در خط فرمان، به تمام تطابق‌های دیگر گسترش می‌یابد، حتی مواردی که پس از به‌کارگیری این گزینه افزوده می‌شوند\&. همراه با گزینهٔ \fB\-d\fP می‌توان رشته‌ای را که باید برای این تطابق ویژه در فهرست نمایش داده شود مشخص کرد\&. اگر رشته‌ای تعیین نشود، به صورت رشته‌ای حاوی متن‌هایی که برای سایر تطابق‌ها درج می‌شد، بریده‌شده متناسب با عرض صفحه نمایش داده خواهد شد\&. .TP \fB\-E\fP \fInumber\fP این گزینه پس از افزوده شدن \fIcompletions\fP منطبق، به تعداد \fInumber\fP تطابق خالی اضافه می‌کند\&. یک تطابق خالی فضایی را در فهرست‌های تکمیل اشغال می‌کند اما هرگز در خط درج نخواهد شد و با تکمیل منویی یا گزینش منویی نیز قابل انتخاب نیست\&. این امر تطابق‌های خالی را تنها برای قالب‌بندی فهرست‌های تکمیل و نمایش رشته‌های توضیحی در فهرست‌های تکمیل سودمند می‌سازد (چرا که با استفاده از گزینهٔ \fB\-d\fP می‌توان رشته‌های نمایشی را به تطابق‌های خالی اختصاص داد)\&. و از آنجا که در غیر این صورت همهٔ رشته‌های خالی به‌جز یکی حذف می‌شدند، این گزینه مستلزم گزینه‌های \fB\-V\fP و \fB\-2\fP خواهد بود (حتی اگر گزینهٔ صریح \fB\-J\fP داده شده باشد)\&. توجه به این نکته می‌تواند مهم باشد چرا که بر فضای نامی که تطابق‌ها در آن افزوده می‌شوند تأثیر می‌گذارد\&. .TP .PD 0 \fB\-\fP .TP .PD \fB\-\fP\fB\-\fP این پرچم به فهرست پرچم‌ها و گزینه‌ها پایان می‌دهد\&. تمام آرگومان‌های پس از آن به عنوان \fIcompletions\fP در نظر گرفته خواهند شد، حتی اگر با خط تیره آغاز شوند\&. .PP به‌جز پرچم \fB\-M\fP، اگر هر یک از این پرچم‌ها بیش از یک بار داده شود، نخستین پرچم (و آرگومان آن) استفاده خواهد شد\&. .RE .TP .PD 0 \fBcompset \-p\fP \fInumber\fP .TP .PD 0 \fBcompset \-P\fP [ \fInumber\fP ] \fIpattern\fP .TP .PD 0 \fBcompset \-s\fP \fInumber\fP .TP .PD 0 \fBcompset \-S\fP [ \fInumber\fP ] \fIpattern\fP .TP .PD 0 \fBcompset \-n\fP \fIbegin\fP [ \fIend\fP ] .TP .PD 0 \fBcompset \-N\fP \fIbeg\-pat\fP [ \fIend\-pat\fP ] .TP .PD \fBcompset \-q\fP این دستور اصلاح پارامترهای ویژه را ساده می‌کند، در حالی که وضعیت بازگشتی آن امکان اجرای آزمایش‌ها روی آن‌ها را فراهم می‌سازد\&. .RS .PP گزینه‌ها عبارتند از: .PP .PD 0 .TP .PD \fB\-p\fP \fInumber\fP اگر طول مقدار پارامتر \fBPREFIX\fP حداقل به اندازهٔ \fInumber\fP نویسه باشد، \fInumber\fP نویسهٔ نخست از آن حذف شده و به محتوای پارامتر \fBIPREFIX\fP الحاق می‌شود\&. .TP \fB\-P\fP [ \fInumber\fP ] \fIpattern\fP اگر مقدار پارامتر \fBPREFIX\fP با هر چیزی آغاز شود که با \fIpattern\fP مطابقت دارد، بخش مطابقت‌یافته از \fBPREFIX\fP حذف شده و به \fBIPREFIX\fP الحاق می‌گردد\&. .RS.PP بدون \fInumber\fP اختیاری، طولانی‌ترین تطبیق در نظر گرفته می‌شود، اما اگر \fInumber\fP مشخص شده باشد، همه چیز تا \fInumber\fPامین تطبیق منتقل می‌شود\&. اگر \fInumber\fP منفی باشد، \fInumber\fPامین طولانی‌ترین تطبیق منتقل خواهد شد\&. برای مثال، اگر \fBPREFIX\fP حاوی رشتهٔ `\fBa=b=c\fP\&' باشد، آن‌گاه \fBcompset \-P '*\e='\fP رشتهٔ `\fBa=b=\fP' را به پارامتر \fBIPREFIX\fP منتقل می‌کند، اما \fBcompset \-P 1 \&'*\e='\fP فقط رشتهٔ `\fBa=\fP\&' را منتقل خواهد کرد\&. .RE .TP \fB\-s\fP \fInumber\fP مانند \fB\-p\fP، اما آخرین \fInumber\fP نویسه را از مقدار \fBSUFFIX\fP به ابتدای مقدار \fBISUFFIX\fP منتقل می‌کند\&. .TP \fB\-S\fP [ \fInumber\fP ] \fIpattern\fP مانند \fB\-P\fP، اما بخش پایانی \fBSUFFIX\fP را تطبیق می‌دهد و بخش تطبیق‌یافته را به ابتدای مقدار \fBISUFFIX\fP منتقل می‌کند\&. .TP \fB\-n\fP \fIbegin\fP [ \fIend\fP ] اگر موقعیت کلمهٔ جاری همان‌طور که توسط پارامتر \fBCURRENT\fP مشخص شده بزرگ‌تر یا مساوی با \fIbegin\fP باشد، همه چیز تا کلمهٔ \fIbegin\fPام از آرایهٔ \fBwords\fP حذف شده و از مقدار پارامتر \fBCURRENT\fP به اندازهٔ \fIbegin\fP کاسته می‌شود\&. .RS .PP اگر آرگومان اختیاری \fIend\fP داده شده باشد، تغییر فقط در صورتی انجام می‌شود که موقعیت کلمهٔ جاری کوچک‌تر یا مساوی با \fIend\fP نیز باشد\&. در این حالت، کلمات از موقعیت \fIend\fP به بعد نیز از آرایهٔ \fBwords\fP حذف می‌شوند\&. .PP هر دو مقدار \fIbegin\fP و \fIend\fP می‌توانند منفی باشند تا شمارش به‌صورت معکوس از آخرین عنصر آرایهٔ \fBwords\fP انجام شود\&. .RE .TP \fB\-N\fP \fIbeg\-pat\fP [ \fIend\-pat\fP ] اگر یکی از عناصر آرایهٔ \fBwords\fP پیش از عنصری که نمایه‌اش توسط مقدار پارامتر \fBCURRENT\fP تعیین شده با الگوی \fIbeg\-pat\fP مطابقت کند، تمام عناصر تا عنصر تطبیق‌یافته و خود آن از آرایهٔ \fBwords\fP حذف می‌شوند و مقدار \fBCURRENT\fP تغییر می‌یابد تا به همان کلمه در آرایهٔ تغییریافته اشاره کند\&. .RS .PP اگر الگوی اختیاری \fIend\-pat\fP نیز داده شده باشد، و عنصری در آرایهٔ \fBwords\fP وجود داشته باشد که با این الگو مطابقت کند، پارامترها تنها در صورتی تغییر می‌یابند که نمایهٔ این کلمه بزرگ‌تر از نمایهٔ ارائه‌شده توسط پارامتر \fBCURRENT\fP باشد (به‌طوری که کلمهٔ منطبق باید بعد از مکان‌نما باشد)\&. در این حالت، کلمات شروع‌شده از کلمهٔ منطبق با \fBend\-pat\fP نیز از آرایهٔ \fBwords\fP حذف می‌شوند\&. اگر \fBwords\fP شامل هیچ کلمه‌ای منطبق با \fIend\-pat\fP نباشد، آزمایش و تغییر به‌گونه‌ای انجام می‌شود که گویی مشخص نشده است\&. .RE .TP \fB\-q\fP کلمه‌ای که در حال حاضر تکمیل می‌شود، بر اساس فاصله‌ها و با رعایت قراردادهای معمول نقل‌قول پوسته به کلمات جداگانه تقسیم می‌شود\&. کلمات حاصل در آرایهٔ \fBwords\fP ذخیره می‌شوند، و \fBCURRENT\fP، \fBPREFIX\fP، \fBSUFFIX\fP، \fBQIPREFIX\fP و \fBQISUFFIX\fP تغییر می‌یابند تا بخشی از کلمه را که تکمیل شده منعکس کنند\&. .PP در تمام موارد فوق، در صورتی که آزمایش موفقیت‌آمیز بوده و پارامترها تغییر کرده باشند، وضعیت بازگشتی صفر است و در غیر این صورت غیرصفر خواهد بود\&. این امکان را فراهم می‌کند که از این دستور توکار در آزمایش‌هایی مانند زیر استفاده شود: .PP .RS .nf \fBif compset \-P \&'*\e='; then \&.\&.\&.\fP .fi .RE .PP این کار باعث می‌شود هر چیزی تا آخرین علامت مساوی و خود آن توسط کد تکمیل نادیده گرفته شود\&. .RE .TP \fBcompcall\fP [ \fB\-TD\fP ] این دستور امکان استفاده از تکمیل‌های تعریف‌شده با دستور توکار \fBcompctl\fP را از درون ویجت‌های تکمیل فراهم می‌کند\&. فهرست تطابق‌ها به گونه‌ای تولید خواهد شد که گویی یکی از توابع غیرویجتی تکمیل (\fBcomplete\-word\fP و غیره) فراخوانی شده است، با این تفاوت که تنها \fBcompctl\fPهای ارائه‌شده برای دستورهای خاص استفاده می‌شوند\&. برای وادار کردن کد به آزمایش تکمیل‌های تعریف‌شده با گزینهٔ \fB\-T\fP از \fBcompctl\fP و/یا تکمیل پیش‌فرض (خواه توسط \fBcompctl \-D\fP تعریف شده باشد یا پیش‌فرض توکار) در جایگاه‌های مناسب، پرچم‌های \fB\-T\fP و/یا \fB\-D\fP می‌توانند به \fBcompcall\fP داده شوند\&. .RS .PP از وضعیت بازگشتی می‌توان برای آزمایش اینکه آیا تعریف منطبقی برای \fBcompctl\fP یافت شد یا خیر استفاده کرد\&. در صورتی که یک \fBcompctl\fP پیدا شده باشد غیرصفر و در غیر این صورت صفر است\&. .PP توجه داشته باشید که این دستور توکار توسط ماژول \fBzsh/compctl\fP تعریف می‌شود\&. .RE .PP .SH "کدهای شرطی تکمیل (COMPLETION CONDITION CODES)" .PP کدهای شرطی اضافی زیر برای استفاده در ساختار \fB[[\fP \fI\&.\&.\&.\fP \fB]]\fP در ویجت‌های تکمیل در دسترس هستند\&. این‌ها روی پارامترهای ویژه عمل می‌کنند\&. تمام این آزمایش‌ها می‌توانند توسط دستور توکار \fBcompset\fP نیز انجام شوند، اما در مورد کدهای شرطی، محتوای پارامترهای ویژه تغییر نمی‌کند\&. .PP .PD 0 .TP .PD \fB\-prefix\fP [ \fInumber\fP ] \fIpattern\fP درست است اگر آزمایش برای گزینهٔ \fB\-P\fP از \fBcompset\fP موفقیت‌آمیز باشد\&. .TP \fB\-suffix\fP [ \fInumber\fP ] \fIpattern\fP درست است اگر آزمایش برای گزینهٔ \fB\-S\fP از \fBcompset\fP موفقیت‌آمیز باشد\&. .TP \fB\-after\fP \fIbeg\-pat\fP درست است اگر آزمایش گزینهٔ \fB\-N\fP تنها با ارائهٔ \fIbeg\-pat\fP موفقیت‌آمیز باشد\&. .TP \fB\-between\fP \fIbeg\-pat end\-pat\fP درست است اگر آزمایش برای گزینهٔ \fB\-N\fP با هر دو الگو موفقیت‌آمیز باشد\&. .PP .SH "کنترل تطبیق تکمیل (COMPLETION MATCHING CONTROL)" .PP هنگامی که کاربر تکمیل را فراخوانی می‌کند، \fIکلمه\fP جاری در خط فرمان (یعنی کلمه‌ای که مکان‌نما در حال حاضر روی آن قرار دارد) برای تولید یک \fIالگوی تطبیق\fP استفاده می‌شود\&. تنها آن دسته از \fIتکمیل‌هایی\fP که با الگو مطابقت دارند به‌عنوان \fIتطابق‌ها\fP به کاربر ارائه می‌شوند\&. .PP الگوی تطبیق پیش‌فرض از کلمهٔ جاری به یکی از روش‌های زیر تولید می‌شود: .PP .PD 0 .TP .PD \(bu الحاق یک `\fB*\fP\&' (تطبیق با هر تعداد نویسه در یک تکمیل) \fIیا،\fP .TP \(bu اگر گزینهٔ پوستهٔ \fBCOMPLETE_IN_WORD\fP تنظیم شده باشد، درج یک `\fB*\fP\&' در موقعیت مکان‌نما\&. .PP این الگوی محدود را می‌توان با ارسال یک \fIمشخصهٔ تطبیق\fP به دستور توکار \fBcompadd\fP از طریق گزینهٔ \fB\-M\fP آن، به‌صورت انتخابی گسترش داد (به `دستورهای توکار تکمیل\&' در بالا مراجعه کنید)\&. یک مشخصهٔ تطبیق از یک یا چند \fIتطبیق‌دهنده\fP تشکیل شده است که با فاصله از هم جدا شده‌اند\&. تطبیق‌دهنده‌ها در یک مشخصهٔ تطبیق یکی پس از دیگری، از چپ به راست اعمال می‌شوند\&. پس از اعمال تمام تطبیق‌دهنده‌ها، تکمیل‌ها با الگوی تطبیق نهایی مقایسه شده و موارد غیرمنطبق کنار گذاشته می‌شوند\&. .PP .PD 0 .TP .PD \(bu توجه داشته باشید که اگر کلمهٔ جاری حاوی یک الگوی glob باشد و گزینهٔ پوستهٔ \fBGLOB_COMPLETE\fP تنظیم شده باشد، یا اگر کلید \fBpattern_match\fP از آرایهٔ انجمنی ویژهٔ \fBcompstate\fP روی یک مقدار غیرخالی تنظیم شده باشد، گزینهٔ \fB\-M\fP نادیده گرفته می‌شود (به `پارامترهای ویژهٔ تکمیل\&' در بالا مراجعه کنید)\&. .TP \(bu کاربران سامانهٔ تکمیل (به \fIzshcompsys\fP(1) مراجعه کنید) به‌طور کلی نباید مستقیماً از گزینهٔ \fB\-M\fP استفاده کنند، بلکه بهتر است از سبک‌های \fBmatcher\-list\fP و \fBmatcher\fP استفاده نمایند (به زیربخش \fIStandard Styles\fP در مستندات COMPLETION SYSTEM CONFIGURATION در \fIzshcompsys\fP(1) مراجعه کنید)\&. .PP هر تطبیق‌دهنده شامل موارد زیر است: .PP .PD 0 .TP .PD \(bu یک حرف حساس به حروف کوچک و بزرگ .TP \(bu یک `\fB:\fP\&' .TP \(bu یک یا چند الگو که با خطوط عمودی (`\fB|\fP\&') از هم جدا شده‌اند .TP \(bu یک علامت مساوی (`\fB=\fP\&')، و .TP \(bu الگویی دیگر\&. .PP الگوهای قبل از `\fB=\fP\&' برای تطبیق زیررشته‌های کلمهٔ جاری استفاده می‌شوند\&. برای هر زیررشتهٔ منطبق‌شده، بخش متناظر از الگوی تطبیق با الگوی پس از `\fB=\fP\&' از طریق یک \fBOR\fP منطقی گسترش می‌یابد\&. .PP هر الگو در یک تطبیق‌دهنده شامل یکی از موارد زیر است: .PP .PD 0 .TP .PD \(bu رشتهٔ خالی یا .TP \(bu دنباله‌ای از .RS .PP .PD 0 .TP .PD \(bu نویسه‌های صریح (که ممکن است با یک `\fB\e\fP\&' نقل‌قول شوند)،.TP \(bu علامت‌های سؤال (`\fB?\fP\&')، .TP \(bu عبارت‌های قلاب (`\fB[\&.\&.\&.]\fP\&'؛ زیربخش \fIGlob Operators\fP را در مستندات GLOB OPERATORS در \fIzshexpn\fP(1) ببینید)، و/یا .TP \(bu عبارت‌های آکولاد (زیر را ببینید)\&. .RE .PP سایر الگوهای شل مجاز نیستند\&. .PP یک عبارت آکولاد، مانند یک عبارت قلاب، از فهرستی از موارد زیر تشکیل می‌شود: .PP .PD 0 .TP .PD \(bu نویسه‌های لفظی، .TP \(bu بازه‌ها (`\fB0\-9\fP\&')، و/یا .TP \(bu رده‌های نویسه (`\fB[:\fP\fIname\fP\fB:]\fP\&')\&. .PP با این حال، تفاوت‌های آن‌ها با یکدیگر به شرح زیر است: .PP .PD 0 .TP .PD \(bu یک عبارت آکولاد با یک جفت آکولاد (`\fB{\&.\&.\&.}\fP\&') محصور می‌شود\&. .TP \(bu عبارت‌های آکولاد از نقیض پشتیبانی نمی‌کنند\&. یعنی یک `\fB!\fP\&' یا `\fB^\fP' در آغاز معنای خاصی ندارد و به عنوان یک نویسه لفظی تفسیر خواهد شد\&. .TP \(bu هنگامی که یک نویسه در کلمه جاری با الگوی \fIn\fPام در یک عبارت آکولاد تطابق یابد، بخش متناظر الگوی تطبیق تنها با الگوی \fIn\fPام عبارت آکولاد در سمت دیگر `\fB=\fP\&' (در صورت وجود) بسط می‌یابد؛ اگر هیچ عبارت آکولادی در سمت دیگر نباشد، آن‌گاه این الگو رشته خالی خواهد بود\&. با این حال، اگر هر یک از عبارت‌های آکولاد عناصر بیشتری نسبت به دیگری داشته باشد، ورودی‌های اضافی نادیده گرفته می‌شوند\&. هنگام مقایسه اندیس‌ها، هر نویسه لفظی یا رده نویسه به عنوان یک عنصر شمارش می‌شود، اما در مقابل هر بازه به فهرست کاملی از نویسه‌های لفظی که بازنمایی می‌کند گسترش می‌یابد\&. علاوه بر این، اگر در \fIهر دو\fP طرف `\fB=\fP\&'، الگوی \fIn\fPام `\fB[:upper:]\fP' یا `\fB[:lower:]\fP' باشد، این موارد نیز مانند بازه‌ها گسترش می‌یابند\&. .PP توجه داشته باشید که اگرچه سامانه تطبیق هنوز نویسه‌های چندبایتی را پشتیبانی نمی‌کند، احتمالاً این قابلیت در آینده افزوده خواهد شد\&. از این رو، استفاده از `\fB[:upper:]\fP\&' و `\fB[:lower:]\fP' به جای `\fBA\-Z\fP\&' و `\fBa\-z\fP' توصیه می‌شود\&. .PP در ادامه، شکل‌های مختلف تطبیق‌دهنده‌های پشتیبانی‌شده آورده شده است\&. هر حالت \fIبزرگ\fP دقیقاً مانند همتای کوچک خود عمل می‌کند، اما یک گام اضافی را \fIپس از\fP اینکه الگوی تطبیق موارد تکمیل نامنطبق را پالایش کرد اضافه می‌نماید: هر یک از زیررشته‌های تطابق که توسط یک زیرالگو از یک تطبیق‌دهنده بزرگ مطابقت داده شده باشد، با زیررشته متناظر از کلمه جاری جایگزین می‌شود\&. با این حال، الگوهای حاصل از تطبیق‌دهنده‌های \fIکوچک\fP وزن بالاتری دارند: اگر یک زیررشته از کلمه جاری توسط الگوهایی از هر دو تطبیق‌دهنده کوچک و بزرگ مطابقت داده شود، الگوی تطبیق‌دهنده کوچک اولویت خواهد داشت و بخش متناظر تطابق دست‌نخورده باقی می‌ماند\&. .PP مگر در مواردی که خلاف آن ذکر شده باشد، تمام مثال‌های ذکرشده فرض می‌کنند که \fBCOMPLETE_IN_WORD\fP تنظیم نشده است (همان‌طور که به‌طور پیش‌فرض چنین است)\&. .PP .PD 0 .TP .PD 0 \fBm:\fP\fIword\-pat\fP\fB=\fP\fImatch\-pat\fP .TP .PD \fBM:\fP\fIword\-pat\fP\fB=\fP\fImatch\-pat\fP .RS .PP به ازای هر زیررشته از کلمه جاری که با \fIword\-pat\fP مطابقت دارد، بخش متناظر الگوی تطبیق را بسط دهید تا علاوه بر آن با \fImatch\-pat\fP نیز تطابق یابد\&. .PP .PD 0 .TP .PD مثال‌ها: .RS .PP \fBm:{[:lower:]}={[:upper:]}\fP امکان می‌دهد هر نویسه کوچک در کلمه جاری به خودش یا همتای بزرگش تکمیل شود\&. بنابراین، تکمیل‌های `\fBfoo\fP\&'، `\fBFOO\fP' و `\fBFoo\fP' همگی تطابق‌هایی برای کلمه `\fBfo\fP\&' در نظر گرفته می‌شوند\&. .PP \fBM:_=\fP هر زیرخط (underscore) از کلمه جاری را در همان موقعیت نسبی، که بر اساس تطبیق زیررشته‌های اطراف آن تعیین می‌شود، در هر تطابق درج می‌کند\&. بنابراین، با فرض تکمیل `\fBfoo\fP\&'، کلمه `\fBf_o\fP' به تطابق `\fBf_oo\fP\&' تکمیل خواهد شد، هرچند که این مورد اصلاً به عنوان یک تکمیل وجود نداشته است\&. .RE .RE .TP .PD 0 \fBb:\fP\fIword\-pat\fP\fB=\fP\fImatch\-pat\fP .TP .PD 0 \fBB:\fP\fIword\-pat\fP\fB=\fP\fImatch\-pat\fP .TP .PD 0 \fBe:\fP\fIword\-pat\fP\fB=\fP\fImatch\-pat\fP .TP .PD \fBE:\fP\fIword\-pat\fP\fB=\fP\fImatch\-pat\fP .RS .PP به ازای هر زیررشته متوالی در ابتدا (\fBb:\fPeginning) یا انتها (\fBe:\fPnd) کلمه جاری که با \fIword\-pat\fP تطابق دارد، بخش متناظر الگوی تطبیق را بسط دهید تا علاوه بر آن با \fImatch\-pat\fP نیز مطابقت کند\&. .PP .PD 0 .TP .PD مثال‌ها: .RS .PP `\fBb:\-=+\fP\&' امکان می‌دهد هر تعداد علامت منفی در آغاز کلمه جاری به یک علامت منفی یا مثبت تکمیل شود\&. .PP `\fBB:0=\fP\&' تمام صفرهای ابتدای کلمه جاری را به ابتدای هر تطابق اضافه می‌کند\&. .RE .RE .TP .PD 0 \fBl:\fP\fB|\fP\fIword\-pat\fP\fB=\fP\fImatch\-pat\fP .TP .PD 0 \fBL:\fP\fB|\fP\fIword\-pat\fP\fB=\fP\fImatch\-pat\fP .TP .PD 0 \fBr:\fP\fIword\-pat\fP\fB|\fP\fB=\fP\fImatch\-pat\fP .TP .PD \fBR:\fP\fIword\-pat\fP\fB|\fP\fB=\fP\fImatch\-pat\fP .RS .PP اگر زیررشته‌ای در لبه چپ (\fBl:\fPeft) یا راست (\fBr:\fPight) کلمه جاری وجود دارد که با \fIword\-pat\fP تطابق می‌کند، بخش متناظر الگوی تطبیق را بسط دهید تا علاوه بر آن با \fImatch\-pat\fP نیز مطابقت داشته باشد\&. .PP برای هر یک از تطبیق‌دهنده‌های \fBl:\fP، \fBL:\fP، \fBr:\fP و \fBR:\fP (شامل موارد زیر)، الگوی \fImatch\-pat\fP می‌تواند یک `\fB*\fP\&' نیز باشد\&. این کار با هر تعداد نویسه در یک تکمیل تطابق می‌یابد\&. .PP .PD 0 .TP .PD مثال‌ها: .RS .PP `\fBr:|=*\fP\&' یک `\fB*\fP' به انتهای الگوی تطبیق می‌افزاید، حتی زمانی که \fBCOMPLETE_IN_WORD\fP تنظیم شده باشد و مکان‌نما در انتهای کلمه جاری نباشد\&. .PP اگر کلمه جاری با یک علامت منفی آغاز شود، `\fBL:|\-=\fP\&' آن را به ابتدای هر تطابق می‌افزاید\&. .RE .RE .TP .PD 0 \fBl:\fP\fIanchor\fP\fB|\fP\fIword\-pat\fP\fB=\fP\fImatch\-pat\fP .TP .PD 0 \fBL:\fP\fIanchor\fP\fB|\fP\fIword\-pat\fP\fB=\fP\fImatch\-pat\fP .TP .PD 0 \fBr:\fP\fIword\-pat\fP\fB|\fP\fIanchor\fP\fB=\fP\fImatch\-pat\fP .TP .PD \fBR:\fP\fIword\-pat\fP\fB|\fP\fIanchor\fP\fB=\fP\fImatch\-pat\fP .RS .PP به ازای هر زیررشته از کلمه جاری که با \fIword\-pat\fP تطابق دارد و در سمت چپ (\fBl:\fPeft) یا راست (\fBr:\fPight) آن زیررشته دیگری منطبق با \fIanchor\fP قرار دارد، بخش متناظر الگوی تطبیق را بسط دهید تا علاوه بر آن با \fImatch\-pat\fP نیز مطابقت یابد\&. .PP توجه داشته باشید که این تطبیق‌دهنده‌ها (و موارد زیر) فقط آنچه را که توسط \fIword\-pat\fP مطابقت داده شده تغییر می‌دهند؛ آن‌ها رفتار تطبیق آنچه توسط \fIanchor\fP (یا \fIcoanchor\fP؛ تطبیق‌دهنده‌های زیر را ببینید) مطابقت یافته را تغییر نمی‌دهند\&. بنابراین، مگر اینکه بخش متناظر آن در الگوی تطبیق تغییر یافته باشد، لنگر (anchor) در کلمه جاری باید دقیقاً و عیناً در هر تکمیل مطابقت داشته باشد، درست مانند هر زیررشته دیگری از کلمه جاری\&. .PP اگر یک تطبیق‌دهنده دست‌کم شامل یک لنگر باشد (که شامل تطبیق‌دهنده‌های دارای دو لنگر در زیر نیز می‌شود)، آن‌گاه \fImatch\-pat\fP می‌تواند `\fB*\fP\&' یا `\fB**\fP' نیز باشد\&. `\fB*\fP' می‌تواند با هر بخشی از تکمیل که شامل هیچ زیررشته‌ای منطبق با \fIanchor\fP نباشد تطابق یابد، در حالی که `\fB**\fP\&' می‌تواند بدون هیچ قیدی با هر بخشی از یک تکمیل مطابقت کند\&. (توجه داشته باشید که این با رفتار `\fB*\fP\&' در حالت‌های بدون لنگر `\fBl:\fP\&' و `\fBr:\fP' و همچنین با `\fB*\fP' و `\fB**\fP\&' در عبارت‌های glob تفاوت دارد\&.).PP .PD 0 .TP .PD مثال‌ها: .RS .PP `\fBr:|\&.=*\fP\&' باعث می‌شود تکمیل `\fBcomp\&.sources\&.unix\fP' با کلمه `\fB\&.\&.u\fP\&' مطابقت پیدا کند \-\- اما \fIنه\fP با کلمه `\fB\&.u\fP'\&. .PP با فرض تکمیل `\fB\-\fP\fB\-foo\fP\&'، تطبیق‌دهنده `\fBL:\-\-|no\-=\fP' کلمه `\fB\-\fP\fB\-no\-\fP\&' را به تطابق `\fB\-\fP\fB\-no\-foo\fP' کامل خواهد کرد\&. .RE .RE .TP .PD 0 \fBl:\fP\fIanchor\fP\fB||\fP\fIcoanchor\fP\fB=\fP\fImatch\-pat\fP .TP .PD 0 \fBL:\fP\fIanchor\fP\fB||\fP\fIcoanchor\fP\fB=\fP\fImatch\-pat\fP .TP .PD 0 \fBr:\fP\fIcoanchor\fP\fB||\fP\fIanchor\fP\fB=\fP\fImatch\-pat\fP .TP .PD \fBR:\fP\fIcoanchor\fP\fB||\fP\fIanchor\fP\fB=\fP\fImatch\-pat\fP .RS .PP به‌ازای هر دو زیررشته متوالی از کلمه جاری که به ترتیب مشخص‌شده با \fIanchor\fP و \fIcoanchor\fP مطابقت دارند، الگوی \fImatch\-pat\fP را بین بخش‌های متناظر آن‌ها در الگوی تطابق درج می‌کند\&. .PP توجه داشته باشید که برخلاف \fIanchor\fP، الگوی \fIcoanchor\fP آنچه را که `\fB*\fP\&' می‌تواند با آن تطابق یابد تغییر نمی‌دهد\&. .PP .PD 0 .TP .PD مثال‌ها: .RS .PP `\fBr:?||[[:upper:]]=*\fP\&' کلمه جاری `\fBfB\fP' را به `\fBfooBar\fP\&' تکمیل خواهد کرد، اما آن را به `\fBfooHooBar\fP' تکمیل نمی‌کند (زیرا `\fB*\fP' در اینجا نمی‌تواند با چیزی که شامل تطابقی برای `\fB[[:upper:]]\fP باشد مطابقت کند)، و همچنین `\fBB\fP\&' را به `\fBfooBar\fP' تکمیل نخواهد کرد (زیرا هیچ نویسه‌ای در کلمه جاری برای تطابق با \fIcoanchor\fP وجود ندارد)\&. .PP با فرض کلمه جاری `\fBpass\&.n\fP\&' و تکمیل `\fBpass\&.byname\fP'، تطبیق‌دهنده `\fBL:\&.||[[:alpha:]]=by\fP\&' تطابق `\fBpass\&.name\fP' را تولید خواهد کرد\&. .RE .RE .TP \fBx:\fP .RS .PP این تطبیق‌دهنده و تمام تطبیق‌دهنده‌های سمت راست آن را نادیده می‌گیرد\&. .PP این تطبیق‌دهنده برای نشانه‌گذاری پایان یک مشخصه تطابق استفاده می‌شود\&. در یک فهرست مستقل و منفرد از تطبیق‌دهنده‌ها، این مورد کاربردی ندارد، اما در جاهایی که مشخصه‌های تطابق به یکدیگر الحاق می‌شوند، همان‌گونه که اغلب هنگام استفاده از سامانه تکمیل رخ می‌دهد (به \fIzshcompsys\fP(1) مراجعه کنید)، می‌تواند به یک مشخصه تطابق اجازه دهد مشخصه دیگری را بازنویسی کند\&. .RE .PP .SH "مثال ویجت تکمیل (COMPLETION WIDGET EXAMPLE)" .PP نخستین گام، تعریف ویجت است: .PP .RS .nf \fBzle \-C complete complete\-word complete\-files\fP .fi .RE .PP سپس می‌توان این ویجت را با استفاده از دستور توکار \fBbindkey\fP به یک کلید متصل کرد: .PP .RS .nf \fBbindkey \&'^X\et' complete\fP .fi .RE .PP پس از آن، با فشردن control\-X و TAB، تابع پوسته \fBcomplete\-files\fP فراخوانی خواهد شد\&. این تابع سپس باید تطابق‌ها را تولید کند، مانند: .PP .RS .nf \fBcomplete\-files () { compadd \- * }\fP .fi .RE .PP این تابع، فایل‌های موجود در دایرکتوری جاری را که با کلمه جاری مطابقت دارند تکمیل خواهد کرد\&.