.TH "ZSHCOMPCTL" "1" "July 12, 2026" "zsh 5\&.9\&.2" .SH "نام (NAME)" zshcompctl \- کنترل و تکمیل خودکار برنامه‌ریزی‌پذیر در zsh .\" Yodl file: Zsh/compctl.yo .SH "توضیحات (DESCRIPTION)" این نسخه از zsh دارای دو روش برای انجام تکمیل کلمات در خط فرمان است\&. کاربران جدید پوسته ممکن است ترجیح دهند از سیستم جدیدتر و قدرتمندتر مبتنی بر توابع پوسته استفاده کنند؛ این سیستم در \fIzshcompsys\fP(1) توضیح داده شده است، و مکانیزم‌های پایه‌ای پوسته که از آن پشتیبانی می‌کنند در \fIzshcompwid\fP(1) شرح داده شده‌اند\&. این مدخل راهنما دستور قدیمی‌تر \fBcompctl\fP را تشریح می‌کند\&. .PD 0 .TP \fBcompctl\fP [ \fB\-CDT\fP ] \fIoptions\fP [ \fIcommand\fP \&.\&.\&. ] .TP \fBcompctl \fP[ \fB\-CDT\fP ] \fIoptions\fP [ \fB\-x\fP \fIpattern\fP \fIoptions\fP \fB\-\fP \&.\&.\&. \fB\-\fP\fB\-\fP ] .TP \fB \fP[ \fB+\fP \fIoptions\fP [ \fB\-x\fP \&.\&.\&. \fB\-\fP\fB\-\fP ] \&.\&.\&. [\fB+\fP] ] [ \fIcommand\fP \&.\&.\&. ] .TP \fBcompctl\fP \fB\-M\fP \fImatch\-specs\fP \&.\&.\&. .TP \fBcompctl\fP \fB\-L\fP [ \fB\-CDTM\fP ] [ \fIcommand\fP \&.\&.\&. ] .TP \fBcompctl\fP \fB+\fP \fIcommand\fP \&.\&.\&. .PD .PP رفتار تکمیل ویرایشگر را بر اساس مجموعه گزینه‌های ارائه شده در \fIoptions\fP کنترل می‌کند\&. دستورات مختلف ویرایش، به‌ویژه \fBexpand\-or\-complete\-word\fP (که معمولاً به کلید tab متصل است)، تلاش می‌کنند کلمه تایپ‌شده توسط کاربر را تکمیل کنند، در حالی که سایر دستورات، به‌ویژه \fBdelete\-char\-or\-list\fP (که معمولاً در حالت ویرایش EMACS به ^D متصل است)، گزینه‌های ممکن را فهرست می‌کنند؛ \fBcompctl\fP مشخص می‌کند که این گزینه‌های ممکن چه مواردی باشند\&. آنها برای نمونه می‌توانند نام فایل‌ها (رایج‌ترین حالت و بنابراین پیش‌فرض)، متغیرهای پوسته، یا کلماتی از یک فهرست تعیین‌شده توسط کاربر باشند\&. .PP .SH "فلگ‌های دستور (COMMAND FLAGS)" تکمیل آرگومان‌های یک دستور ممکن است برای هر دستور متفاوت باشد یا از مقدار پیش‌فرض استفاده کند\&. همچنین رفتار هنگام تکمیل خود کلمه دستور را می‌توان به طور جداگانه مشخص کرد\&. این موارد متناظر با فلگ‌ها و آرگومان‌های زیر هستند که همگی (به‌جز \fB\-L\fP) می‌توانند با هر ترکیبی از گزینه‌های \fIoptions\fP که در ادامه در بخش «فلگ‌های گزینه‌ها» توضیح داده شده‌اند، ترکیب شوند: .PP .PD 0 .TP .PD \fIcommand\fP \&.\&.\&. تکمیل را برای دستورات نام‌برده کنترل می‌کند که باید در انتهای خط فرمان فهرست شوند\&. اگر تکمیل برای دستوری با نام مسیری شامل اسلش انجام شود و هیچ تعریفی برای تکمیل آن یافت نشود، جستجو با آخرین جزء مسیر دوباره تکرار می‌شود\&. اگر دستور با یک \fB=\fP شروع شود، تکمیل با نام مسیر دستور امتحان می‌شود\&. .RS .PP هر یک از رشته‌های \fIcommand\fP می‌توانند الگوهایی به همان شکلی باشند که معمولاً برای تطبیق نام فایل‌ها استفاده می‌شود\&. این الگوها باید برای محافظت در برابر بسط فوری در کوتیشن قرار گیرند؛ به عنوان مثال رشته دستوری \fB\&'foo*'\fP ترتیبی می‌دهد که کلمات هر دستوری که با \fBfoo\fP شروع می‌شود تکمیل گردند\&. هنگامی که تکمیل فراخوانی می‌شود، تمام تکمیل‌های مبتنی بر الگو به ترتیب معکوس تعریفشان بررسی می‌شوند تا زمانی که یکی مطابقت یابد\&. به طور پیش‌فرض، تکمیل سپس به صورت عادی ادامه می‌یابد، یعنی پوسته تلاش می‌کند مطابقت‌های بیشتری برای دستور خاص موجود در خط فرمان تولید کند؛ با قرار دادن \fB\-tn\fP در فلگ‌های تکمیل الگو می‌توان این رفتار را بازنویسی و متوقف کرد\&. .PP توجه داشته باشید که نام‌های مستعار پیش از تعیین نام دستور بسط می‌یابند، مگر اینکه گزینه \fBCOMPLETE_ALIASES\fP تنظیم شده باشد\&. دستورات را نمی‌توان با فلگ‌های \fB\-C\fP، \fB\-D\fP یا \fB\-T\fP ترکیب کرد\&. .RE .TP \fB\-C\fP تکمیل را هنگامی که خود کلمه دستور در حال تکمیل است کنترل می‌کند\&. اگر هیچ دستور \fBcompctl \-C\fP صادر نشده باشد، نام هر دستور اجرایی (چه در مسیر path باشد و چه مختص پوسته، مانند نام‌های مستعار یا توابع) تکمیل می‌شود\&. .TP \fB\-D\fP رفتار پیش‌فرض تکمیل را برای آرگومان‌های دستوراتی که هیچ رفتار خاصی به آنها اختصاص داده نشده کنترل می‌کند\&. اگر هیچ دستور \fBcompctl \-D\fP صادر نشده باشد، نام فایل‌ها تکمیل می‌شوند\&. .TP \fB\-T\fP فلگ‌های تکمیلی را ارائه می‌دهد که باید پیش از هر پردازش دیگری استفاده شوند، حتی پیش از پردازش \fBcompctl\fPهای تعریف‌شده برای دستورات خاص\&. این ویژگی به‌ویژه هنگام ترکیب با تکمیل گسترش‌یافته (فلگ \fB\-x\fP، بخش «تکمیل گسترش‌یافته» در زیر را ببینید) مفید است\&. با استفاده از این فلگ می‌توانید رفتار پیش‌فرضی را تعریف کنید که بدون استثنا بر تمام دستورات اعمال شود، یا می‌توانید رفتار استاندارد را برای تمامی دستورات تغییر دهید\&. برای مثال، اگر دسترسی شما به پایگاه داده کاربران بیش از حد کند است و/یا شامل کاربران بسیار زیادی است (به طوری که تکمیل پس از `\fB~\fP\&' بیش از حد کند و غیرقابل استفاده می‌شود)، می‌توانید از دستور زیر استفاده کنید: .RS .PP .RS .nf \fBcompctl \-T \-x \&'s[~] C[0,[^/]#]' \-k friends \-S/ \-tn\fP .fi .RE .PP تا رشته‌های موجود در آرایه \fBfriends\fP پس از `\fB~\fP\&' تکمیل شوند\&. آرگومان \fBC[\fP\fI\&.\&.\&.\fP\fB]\fP لازم است تا این شکل از تکمیل \fB~\fP پس از اتمام نام دایرکتوری امتحان نشود\&. .RE .TP \fB\-L\fP رفتار تکمیل موجود را به شکلی مناسب برای قرار دادن در اسکریپت راه‌اندازی فهرست می‌کند؛ رفتار فعلی تغییری نمی‌کند\&. هر ترکیبی از فرم‌های بالا، یا فلگ \fB\-M\fP (که باید پس از فلگ \fB\-L\fP بیاید) را می‌توان مشخص کرد، در غیر این صورت تمامی تکمیل‌های تعریف‌شده فهرست می‌شوند\&. هر فلگ دیگری که ارائه شود نادیده گرفته می‌شود\&. .TP \fIno argument\fP اگر هیچ آرگومانی داده نشود، \fBcompctl\fP تمامی تکمیل‌های تعریف‌شده را به صورت مختصر فهرست می‌کند؛ همراه با فهرستی از \fIoptions\fP، تمامی تکمیل‌هایی که آن فلگ‌ها برایشان تنظیم شده است (بدون احتساب تکمیل گسترش‌یافته) فهرست می‌شوند\&. .PP اگر فلگ \fB+\fP به تنهایی بیاید و بلافاصله پس از آن فهرست \fIcommand\fP قرار گیرد، رفتار تکمیل برای تمام دستورات موجود در این فهرست به حالت پیش‌فرض بازنشانی می‌شود\&. به عبارت دیگر، تکمیل در ادامه از گزینه‌های مشخص‌شده توسط فلگ \fB\-D\fP استفاده خواهد کرد\&. .PP فرمی که در آن \fB\-M\fP به عنوان نخستین و تنها گزینه آمده باشد، مشخصات تطبیق سراسری را تعریف می‌کند (نگاه کنید به zshcompwid)\&. مشخصات تطبیق داده‌شده برای هر تلاش تکمیل استفاده خواهند شد (فقط هنگام استفاده از \fBcompctl\fP، نه در سیستم جدید تکمیل) و به ترتیبی که تعریف شده‌اند بررسی می‌شوند تا زمانی که یکی حداقل یک تطابق ایجاد کند\&. برای مثال: .PP .RS .nf \fBcompctl \-M \&'' 'm:{a\-zA\-Z}={A\-Za\-z}'\fP .fi .RE .PP این دستور ابتدا تکمیل را بدون هیچ مشخصه تطبیق سراسری (رشته خالی) امتحان می‌کند و اگر تطابقی حاصل نشد، تکمیل غیرحساس به بزرگی و کوچکی حروف را امتحان خواهد کرد\&. .PP .SH "فلگ‌های گزینه‌ها (OPTION FLAGS)" .PD 0 .TP [ \fB\-fcFBdeaRGovNAIOPZEnbjrzu/12\fP ] .TP [ \fB\-k\fP \fIarray\fP ] [ \fB\-g\fP \fIglobstring\fP ] [ \fB\-s\fP \fIsubststring\fP ] .TP [ \fB\-K\fP \fIfunction\fP ] .TP [ \fB\-Q\fP ] [ \fB\-P\fP \fIprefix\fP ] [ \fB\-S\fP \fIsuffix\fP ] .TP [ \fB\-W\fP \fIfile\-prefix\fP ] [ \fB\-H\fP \fInum pattern\fP ] .TP [ \fB\-q\fP ] [ \fB\-X\fP \fIexplanation\fP ] [ \fB\-Y\fP \fIexplanation\fP ] .TP [ \fB\-y\fP \fIfunc\-or\-var\fP ] [ \fB\-l\fP \fIcmd\fP ] [ \fB\-h\fP \fIcmd\fP ] [ \fB\-U\fP ] .TP [ \fB\-t\fP \fIcontinue\fP ] [ \fB\-J\fP \fIname\fP ] [ \fB\-V\fP \fIname\fP ] .TP [ \fB\-M\fP \fImatch\-spec\fP ] .PD .PP گزینه‌های \fIoptions\fP باقی‌مانده، نوع آرگومان‌های دستور را که در حین تکمیل باید جستجو شوند مشخص می‌کنند\&. هر ترکیبی از این فلگ‌ها را می‌توان مشخص کرد؛ نتیجه یک فهرست مرتب‌شده از تمامی گزینه‌های ممکن است\&. گزینه‌ها به شرح زیر هستند\&. .PP .SS "فلگ‌های ساده (Simple Flags)" این فلگ‌ها فهرست‌های تکمیلی تولید می‌کنند که توسط خود پوسته ساخته می‌شوند: .PP .PD 0 .TP .PD \fB\-f\fP نام فایل‌ها و مسیرهای سیستم فایل\&. .TP \fB\-/\fP صرفاً مسیرهای سیستم فایل (دایرکتوری‌ها)\&. .TP \fB\-c\fP نام دستورات، شامل نام‌های مستعار، توابع پوسته، دستورات داخلی و کلمات کلیدی رزروشده\&. .TP \fB\-F\fP نام توابع\&. .TP \fB\-B\fP نام دستورات داخلی (builtins)\&. .TP \fB\-m\fP نام دستورات خارجی\&. .TP \fB\-w\fP کلمات کلیدی رزروشده\&. .TP \fB\-a\fP نام‌های مستعار\&. .TP \fB\-R\fP نام‌های مستعار عادی (غیرسراسری)\&. .TP \fB\-G\fP نام‌های مستعار سراسری\&. .TP \fB\-d\fP این گزینه می‌تواند با \fB\-F\fP، \fB\-B\fP، \fB\-w\fP، \fB\-a\fP، \fB\-R\fP و \fB\-G\fP ترکیب شود تا نام توابع، دستورات داخلی، کلمات رزروشده یا نام‌های مستعار غیرفعال‌شده به دست آید\&. .TP \fB\-e\fP این گزینه (برای نمایش دستورات فعال) به صورت پیش‌فرض فعال است، اما ممکن است با \fB\-d\fP ترکیب شود؛ \fB\-de\fP در ترکیب با \fB\-F\fP، \fB\-B\fP، \fB\-w\fP، \fB\-a\fP، \fB\-R\fP و \fB\-G\fP نام توابع، دستورات داخلی، کلمات رزروشده یا نام‌های مستعار را صرف‌نظر از غیرفعال بودن یا نبودن آنها تکمیل می‌کند\&. .TP \fB\-o\fP نام گزینه‌های پوسته (نگاه کنید به \fIzshoptions\fP(1))\&. .TP \fB\-v\fP نام هر متغیر تعریف‌شده در پوسته\&. .TP \fB\-N\fP نام پارامترهای اسکالر (غیرآرایه‌ای)\&. .TP \fB\-A\fP نام آرایه‌ها\&. .TP \fB\-I\fP نام متغیرهای عددی صحیح\&. .TP \fB\-O\fP نام متغیرهای فقط‌خواندنی\&. .TP \fB\-p\fP نام پارامترهای مورد استفاده توسط پوسته (شامل پارامترهای ویژه)\&. .TP \fB\-Z\fP نام پارامترهای ویژه پوسته\&. .TP \fB\-E\fP نام متغیرهای محیطی\&. .TP \fB\-n\fP دایرکتوری‌های نام‌گذاری‌شده\&. .TP \fB\-b\fP نام کلیدهای مقیدشده (bindings)\&. .TP \fB\-j\fP نام کارها (jobs): اولین کلمه از خط فرمان رهبر کار\&. این گزینه همراه با دستور داخلی \fBkill\fP مفید است\&. .TP \fB\-r\fP نام کارهای در حال اجرا\&. .TP \fB\-z\fP نام کارهای تعلیق‌شده\&. .TP \fB\-u\fP نام‌های کاربری\&. .PP .SS "فلگ‌های دارای آرگومان (Flags with Arguments)" این فلگ‌ها دارای آرگومان‌های ارائه‌شده توسط کاربر هستند تا نحوه تشکیل فهرست تکمیل‌ها را تعیین کنند: .PP .PD 0 .TP .PD \fB\-k\fP \fIarray\fP نام‌هایی که از عناصر \fB$\fP\fIarray\fP گرفته می‌شوند (توجه داشته باشید که `\fB$\fP\&' در خط فرمان ظاهر نمی‌شود)\&. همچنین، خود آرگومان \fIarray\fP می‌تواند مجموعه‌ای از مقادیر جداشده با فاصله یا کاما درون پرانتز باشد که در آن هر جداکننده‌ای را می‌توان با بک‌اسلش اسکیپ کرد؛ در این حالت آرگومان باید درون کوتیشن قرار گیرد\&. برای مثال: .RS .PP .RS .nf \fBcompctl \-k "(cputime filesize datasize stacksize coredumpsize resident descriptors)" limit\fP .fi .RE .RE .TP \fB\-g\fP \fIglobstring\fP رشته \fIglobstring\fP با استفاده از الگویابی نام فایل بسط می‌یابد؛ باید درون کوتیشن قرار گیرد تا از بسط فوری محافظت شود\&. نام فایل‌های حاصل به عنوان گزینه‌های ممکن تکمیل در نظر گرفته می‌شوند\&. برای دایرکتوری‌ها به جای `\fB*/\fP\&' از `\fB*(/)\fP\&' استفاده کنید\&. پارامتر ویژه \fBfignore\fP بر فایل‌های حاصل اعمال نمی‌شود\&. می‌توان بیش از یک الگو را به صورت جداشده با فاصله ارائه کرد\&. (توجه داشته باشید که بسط کروشه بخشی از الگویابی globbing \fIنیست\fP\&. از نحو `\fB(either|or)\fP\&' برای تطبیق گزینه‌های انتخابی استفاده کنید\&.) .TP \fB\-s\fP \fIsubststring\fP رشته \fIsubststring\fP به کلمات تفکیک می‌شود و سپس این کلمات با استفاده از تمام مکانیزم‌های بسط پوسته بسط می‌یابند (نگاه کنید به \fIzshexpn\fP(1))\&. کلمات حاصل به عنوان گزینه‌های ممکن تکمیل در نظر گرفته می‌شوند\&. پارامتر ویژه \fBfignore\fP بر فایل‌های حاصل اعمال نمی‌شود\&. توجه داشته باشید که \fB\-g\fP برای نام فایل‌ها سریع‌تر است\&. .TP \fB\-K\fP \fIfunction\fP تابع داده‌شده را برای دریافت تکمیل‌ها فرامی‌خواند\&. مگر اینکه نام تابع با زیرخط شروع شود، دو آرگومان به تابع ارسال می‌شود: پیشوند و پسوند کلمه‌ای که تکمیل روی آن انجام می‌شود؛ به عبارت دیگر نویسه‌های قبل از موقعیت مکان‌نما، و نویسه‌های از موقعیت مکان‌نما به بعد\&. کل خط فرمان را می‌توان با فلگ‌های \fB\-c\fP و \fB\-l\fP دستور داخلی \fBread\fP دریافت کرد\&. تابع باید متغیر \fBreply\fP را با آرایه‌ای حاوی گزینه‌های تکمیل (یک تکمیل در هر عنصر) تنظیم کند؛ توجه داشته باشید که \fBreply\fP نباید به صورت محلی در تابع تعریف شود\&. از درون چنین تابعی خط فرمان با فلگ‌های \fB\-c\fP و \fB\-l\fP دستور داخلی \fBread\fP قابل دسترسی است\&. برای مثال: .RS .PP .RS .nf \fBfunction whoson { reply=(`users`); } compctl \-K whoson talk\fP .fi .RE .PP فقط کاربران واردشده به سیستم را بعد از `\fBtalk\fP\&' تکمیل می‌کند\&. توجه داشته باشید که `\fBwhoson\fP' باید یک آرایه برگرداند، بنابراین `\fBreply=`users`\fP\&' نادرست خواهد بود\&. .RE .TP \fB\-H\fP \fInum pattern\fP گزینه‌های ممکن تکمیل از \fInum\fP خط آخر تاریخچه گرفته می‌شوند\&. فقط کلماتی که با \fIpattern\fP مطابقت داشته باشند انتخاب می‌شوند\&. اگر \fInum\fP صفر یا منفی باشد کل تاریخچه جستجو می‌شود و اگر \fIpattern\fP یک رشته خالی باشد تمام کلمات انتخاب می‌شوند (مانند `\fB*\fP\&')\&. یک کاربرد متداول عبارت است از: .RS .PP .RS .nf \fBcompctl \-D \-f + \-H 0 \&''\fP .fi .RE .PP که باعث می‌شود در صورت عدم تطابق نام فایل، تکمیل در فهرست تاریخچه به دنبال کلمه بگردد\&. .RE .PP .SS "فلگ‌های کنترلی (Control Flags)" این فلگ‌ها مستقیماً انواع نام‌های مورد نظر برای تکمیل را مشخص نمی‌کنند، بلکه گزینه‌هایی را که این کار را انجام می‌دهند دستکاری می‌کنند: .PP .PD 0 .TP .PD \fB\-Q\fP به پوسته دستور می‌دهد که نویسه‌های فرامعنایی (metacharacters) را در تکمیل‌های ممکن درون کوتیشن قرار ندهد\&. به طور معمول نتایج یک تکمیل همراه با قرار دادن نویسه‌های فرامعنایی در کوتیشن در خط فرمان درج می‌شوند تا به عنوان نویسه‌های عادی تفسیر شوند\&. این رفتار برای نام فایل‌ها و رشته‌های معمولی مناسب است\&. با این حال، برای کاربردهای ویژه، مانند درج یک عبارت با بک‌تیک از آرایه تکمیل (\fB\-k\fP) به گونه‌ای که عبارت تا زمان اجرای کامل خط ارزیابی نشود، باید از این گزینه استفاده شود\&. .TP \fB\-P\fP \fIprefix\fP پیشوند \fIprefix\fP دقیقاً قبل از رشته تکمیل‌شده درج می‌شود؛ هر بخش اولیه‌ای که از قبل تایپ شده باشد تکمیل می‌شود و کل \fIprefix\fP برای مقاصد تکمیل نادیده گرفته می‌شود\&. برای مثال: .RS .PP .RS .nf \fBcompctl \-j \-P "%" kill\fP .fi .RE .PP یک `%\&' بعد از دستور kill درج می‌کند و سپس نام‌های کارها را تکمیل می‌نماید\&. .RE .TP \fB\-S\fP \fIsuffix\fP هنگامی که تکمیلی پیدا می‌شود، پسوند \fIsuffix\fP بعد از رشته تکمیل‌شده درج می‌شود\&. در حالت تکمیل منویی، پسوند بلافاصله درج می‌گردد، اما همچنان می‌توان با فشردن مکرر همان کلید در فهرست تکمیل‌ها پیمایش کرد\&. .TP \fB\-W\fP \fIfile\-prefix\fP همراه با دایرکتوری \fIfile\-prefix\fP: برای تکمیل دستور، فایل، دایرکتوری و الگوهای جستجوی نام فایل (گزینه‌های \fB\-c\fP، \fB\-f\fP، \fB\-/\fP، \fB\-g\fP)، پیشوند فایل به صورت ضمنی در ابتدای نام تکمیل اضافه می‌شود\&. برای مثال: .RS .PP .RS .nf \fBcompctl \-/ \-W ~/Mail maildirs\fP .fi .RE .PP هر زیردایرکتوری را در هر عمقی در زیر دایرکتوری \fB~/Mail\fP تکمیل می‌کند، هرچند که آن پیشوند در خط فرمان ظاهر نمی‌شود\&. همچنین \fIfile\-prefix\fP می‌تواند به شکلی باشد که توسط فلگ \fB\-k\fP پذیرفته می‌شود، یعنی نام یک آرایه یا یک فهرست صریح درون پرانتز\&. در این حالت تمام دایرکتوری‌های موجود در فهرست برای تکمیل‌های ممکن جستجو خواهند شد\&. .RE .TP \fB\-q\fP اگر همراه با پسوندی که توسط گزینه \fB\-S\fP مشخص شده استفاده شود، باعث می‌شود در صورتی که نویسه بعدی تایپ‌شده فاصله باشد یا چیزی درج نکند، یا اگر پسوند تنها از یک نویسه تشکیل شده باشد و نویسه بعدی تایپ‌شده همان نویسه باشد، پسوند حذف شود؛ این همان قاعده‌ای است که برای گزینه \fBAUTO_REMOVE_SLASH\fP استفاده می‌شود\&. این گزینه برای جداکننده‌های فهرست (مانند کاما، دونقطه و غیره) بیشترین کاربرد را دارد\&. .TP \fB\-l\fP \fIcmd\fP این گزینه محدوده کلمات خط فرمان را که به عنوان آرگومان در نظر گرفته می‌شوند محدود می‌کند\&. اگر با یکی از الگوهای تکمیل گسترش‌یافته `\fBp[\fP\&.\&.\&.\fB]\fP\&'، `\fBr[\fP\&.\&.\&.\fB]\fP\&' یا `\fBR[\fP\&.\&.\&.\fB]\fP' (بخش «تکمیل گسترش‌یافته» در زیر را ببینید) ترکیب شود، محدوده به دامنه آرگومان‌های مشخص‌شده در براکت‌ها محدود می‌شود\&. سپس تکمیل به گونه‌ای انجام می‌گیرد که گویی این موارد به عنوان آرگومان به دستور \fIcmd\fP ارائه‌شده به این گزینه داده شده‌اند\&. اگر رشته \fIcmd\fP خالی باشد، اولین کلمه در محدوده به عنوان نام دستور در نظر گرفته شده و تکمیل نام دستور روی اولین کلمه محدوده انجام می‌شود\&. برای مثال: .RS .PP .RS .nf \fBcompctl \-x \&'r[\-exec,;]' \-l '' \-\- find\fP .fi .RE .PP آرگومان‌های بین `\fB\-exec\fP\&' و `\fB;\fP' بعدی (یا انتهای خط فرمان در صورت عدم وجود چنین رشته‌ای) را به گونه‌ای تکمیل می‌کند که گویی یک خط فرمان جداگانه هستند\&. .RE .TP \fB\-h\fP \fIcmd\fP به طور معمول zsh رشته‌های داخل کوتیشن را به عنوان یک کل واحد تکمیل می‌کند\&. با این گزینه، می‌توان تکمیل را به صورت جداگانه روی بخش‌های مختلف چنین رشته‌هایی انجام داد\&. این گزینه شبیه به گزینه \fB\-l\fP عمل می‌کند اما کد تکمیل را وادار می‌سازد روی بخش‌هایی از کلمه جاری که با فاصله جدا شده‌اند کار کند\&. این بخش‌ها به گونه‌ای تکمیل می‌شوند که گویی آرگومان‌های دستور داده‌شده در \fIcmd\fP هستند\&. اگر \fIcmd\fP رشته خالی باشد، بخش اول همانند \fB\-l\fP به عنوان نام دستور تکمیل می‌شود\&. .TP \fB\-U\fP از کل فهرست تکمیل‌های ممکن استفاده می‌کند، خواه واقعاً با کلمه موجود در خط فرمان مطابقت داشته باشند یا خیر\&. کلمه‌ای که تا این لحظه تایپ شده حذف خواهد شد\&. این گزینه بیشترین کاربرد را با تابعی دارد (ارائه‌شده با گزینه \fB\-K\fP) که می‌تواند اجزای کلمه ارسال‌شده به آن را (یا از طریق فلگ‌های \fB\-c\fP و \fB\-l\fP دستور داخلی \fBread\fP) بررسی کند و از معیارهای خود برای تصمیم‌گیری در مورد موارد منطبق بهره گیرد\&. اگر هیچ تکمیلی وجود نداشته باشد، کلمه اصلی حفظ می‌شود\&. از آنجا که تکمیل‌های ممکن تولیدشده به ندرت پیشوندها و پسوندهای مشترک جالب توجهی دارند، در صورتی که \fBAUTO_MENU\fP تنظیم شده باشد و این فلگ استفاده شود، تکمیل منویی فوراً آغاز می‌گردد\&. .TP \fB\-y\fP \fIfunc\-or\-var\fP فهرست ارائه‌شده توسط \fIfunc\-or\-var\fP هر زمان که به فهرست کردن نیاز باشد به جای فهرست تکمیل‌ها نمایش داده می‌شود؛ تکمیل‌های واقعی که باید درج شوند تغییری نمی‌کنند\&. این مقدار به دو روش قابل ارائه است\&. ابتدا، اگر \fIfunc\-or\-var\fP با یک \fB$\fP شروع شود، متغیری را تعریف می‌کند، یا اگر با پرانتز باز شروع شود یک آرایه صریح را مشخص می‌کند که حاوی فهرست است\&. ممکن است متغیر قبلاً با فراخوانی یک تابع با استفاده از گزینه \fB\-K\fP مقداردهی شده باشد\&. در غیر این صورت، حاوی نام تابعی است که برای ایجاد این فهرست اجرا خواهد شد\&. تمام تکمیل‌های منطبق، از جمله پیشوندها و پسوندهای کاملاً بسط‌یافته، به عنوان فهرست آرگومان به تابع تحویل داده می‌شوند و تابع باید آرایه \fBreply\fP را با نتیجه تنظیم کند\&. در هر دو حالت، فهرست نمایشی تنها پس از ایجاد فهرست کاملی از موارد منطبق واکشی خواهد شد\&. .RS .PP توجه داشته باشید که فهرست بازگردانده‌شده الزامی ندارد که حتی از نظر تعداد با مجموعه اصلی مطابقت‌ها همخوانی داشته باشد، و می‌تواند به جای آرایه به صورت یک اسکالر ارسال شود\&. در این حالت هیچ قالب‌بندی خاصی روی نویسه‌ها در خروجی اعمال نمی‌شود؛ به ویژه نویسه‌های خط جدید به صورت لغوی چاپ می‌شوند و در صورت وجود آنها خروجی ستونی غیرفعال می‌گردد\&. .RE .TP \fB\-X\fP \fIexplanation\fP هنگام تلاش برای تکمیل روی مجموعه جاری گزینه‌ها، متن \fIexplanation\fP را چاپ می‌کند\&. عبارت `\fB%n\fP\&' در این رشته با تعداد مطابقت‌هایی که برای این رشته توضیحی اضافه شده‌اند جایگزین می‌شود\&. این توضیح تنها در صورتی ظاهر می‌شود که تکمیل امتحان شده باشد و تطابق یکتایی وجود نداشته باشد، یا هنگام فهرست کردن تکمیل‌ها\&. رشته‌های توضیحی همراه با مطابقت‌های گروه مشخص‌شده در کنار گزینه \fB\-X\fP (با استفاده از گزینه \fB\-J\fP یا \fB\-V\fP) فهرست خواهند شد\&. اگر رشته توضیحی یکسانی به چند گزینه \fB\-X\fP داده شود، این رشته تنها یک بار (برای هر گروه) ظاهر می‌شود و تعداد مطابقت‌های نمایش‌داده‌شده برای `\fB%n\fP\&' مجموع تمام مطابقت‌ها برای هر یک از این کاربردها خواهد بود\&. در هر صورت، رشته توضیحی تنها در صورتی نمایش داده می‌شود که حداقل یک تطابق برای آن رشته اضافه شده باشد\&. .RS .PP توالی‌های \fB%B\fP، \fB%b\fP، \fB%S\fP، \fB%s\fP، \fB%U\fP و \fB%u\fP ویژگی‌های خروجی (بولد، برجسته و زیرخط) را مشخص می‌کنند، \fB%F\fP، \fB%f\fP، \fB%K\fP و \fB%k\fP رنگ‌های پیش‌زمینه و پس‌زمینه را تعیین می‌کنند، و \fB%{\fP\fI\&.\&.\&.\fP\fB%}\fP می‌تواند برای گنجاندن توالی‌های اسکیپ تحت‌اللفظی همانند اعلان‌ها به کار رود\&. .RE .TP \fB\-Y\fP \fIexplanation\fP همانند \fB\-X\fP است، به جز اینکه \fIexplanation\fP ابتدا طبق قواعد معمول رشته‌ها در دابل‌کوتیشن بسط می‌یابد\&. این بسط پس از فراخوانی هرگونه تابع برای گزینه‌های \fB\-K\fP یا \fB\-y\fP انجام می‌شود که به آنها امکان مقداردهی متغیرها را می‌دهد\&. .TP \fB\-t\fP \fIcontinue\fP رشته \fIcontinue\fP شامل نویسه‌ای است که مشخص می‌کند کدام مجموعه از فلگ‌های تکمیل باید در مرحله بعد استفاده شوند\&. کاربردهای آن عبارت است از: .RS .PP (i) همراه با \fB\-T\fP، یا هنگام بررسی فهرستی از تکمیل‌های مبتنی بر الگو، در حالتی که \fBcompctl\fP پس از یافتن مطابقت‌ها معمولاً به پردازش عادی ادامه می‌دهد؛ با `\fB\-tn\fP\&' می‌توان از این ادامه کار جلوگیری کرد\&. .PP (ii) همراه با فهرستی از گزینه‌های جایگزین جداشده با \fB+\fP، زمانی که \fBcompctl\fP به طور معمول پس از تولید مطابقت توسط یکی از گزینه‌ها متوقف می‌شود\&. می‌توان آن را با افزودن `\fB\-t+\fP\&' به فلگ‌های گزینه جایگزینِ قبل از `\fB+\fP\&' وادار کرد تا مجموعه بعدی تکمیل‌ها را بررسی کند\&. .PP (iii) در یک فهرست تکمیل گسترش‌یافته (در زیر ببینید)، جایی که \fBcompctl\fP معمولاً تا زمان برقراری یک مجموعه از شرایط ادامه داده و سپس فقط از فلگ‌های بلافاصله پس از آن استفاده می‌کند\&. با `\fB\-t\-\fP\&'، دستور \fBcompctl\fP به امتحان تکمیل‌های گسترش‌یافته پس از `\fB\-\fP\&' بعدی ادامه می‌دهد؛ با `\fB\-tx\fP\&' تکمیل را با فلگ‌های پیش‌فرض، به عبارت دیگر فلگ‌های قبل از `\fB\-x\fP\&' امتحان خواهد کرد\&. .RE .TP \fB\-J\fP \fIname\fP نام گروهی را مشخص می‌کند که مطابقت‌ها باید در آن قرار گیرند\&. گروه‌ها به طور جداگانه فهرست و مرتب می‌شوند؛ به همین ترتیب، تکمیل منویی گزینه‌های منطبق در گروه‌ها را به ترتیبی که گروه‌ها تعریف شده‌اند ارائه می‌دهد\&. اگر نام گروهی صراحتاً داده نشود، مطابقت‌ها در گروهی به نام \fBdefault\fP ذخیره می‌شوند\&. اولین باری که با یک نام گروه برخورد می‌شود، گروهی با آن نام ایجاد می‌گردد\&. پس از آن تمام مطابقت‌های دارای همان نام گروه در آن ذخیره می‌شوند\&. .RS .PP این گزینه می‌تواند همراه با تکمیل‌های جایگزین غیرانحصاری مفید باشد\&. برای مثال در: .PP .RS .nf \fBcompctl \-f \-J files \-t+ + \-v \-J variables foo\fP .fi .RE .PP هم فایل‌ها و هم متغیرها گزینه‌های ممکن تکمیل هستند، چرا که \fB\-t+\fP باعث می‌شود هر دو مجموعه جایگزین‌های قبل و بعد از \fB+\fP به صورت همزمان در نظر گرفته شوند\&. با این حال به دلیل گزینه‌های \fB\-J\fP، تمامی فایل‌ها پیش از تمام متغیرها فهرست می‌شوند\&. .RE .TP \fB\-V\fP \fIname\fP مانند \fB\-J\fP است، اما مطابقت‌های درون گروه در فهرست‌ها و در تکمیل منویی مرتب نخواهند شد\&. این گروه‌های مرتب‌نشده در فضای نام متفاوتی نسبت به گروه‌های مرتب‌شده قرار دارند، بنابراین گروه‌های تعریف‌شده به عنوان \fB\-J files\fP و \fB\-V files\fP متمایز هستند\&. .TP \fB\-1\fP اگر همراه با گزینه \fB\-V\fP داده شود، باعث می‌شود تنها موارد تکراری متوالی در گروه حذف شوند\&. توجه داشته باشید که گروه‌های دارای این فلگ و فاقد آن در فضاهای نام متفاوتی قرار دارند\&. .TP \fB\-2\fP اگر همراه با گزینه \fB\-J\fP یا \fB\-V\fP داده شود، باعث می‌شود تمام موارد تکراری حفظ شوند\&. مجدداً، گروه‌های دارای این فلگ و فاقد آن در فضاهای نام متفاوتی هستند\&. .TP \fB\-M\fP \fImatch\-spec\fP مشخصات کنترل تطبیق اضافی را تعریف می‌کند که تنها هنگام بررسی کلمات برای فهرست فلگ‌هایی که این فلگ در آن ظاهر می‌شود باید استفاده گردند\&. قالب رشته \fImatch\-spec\fP در zshcompwid توضیح داده شده است\&. .PP .SH "تکمیل جایگزین (ALTERNATIVE COMPLETION)" .PD 0 .TP \fBcompctl\fP [ \fB\-CDT\fP ] \fIoptions\fP \fB+\fP \fIoptions\fP [ \fB+\fP \&.\&.\&. ] [ \fB+\fP ] \fIcommand\fP \&.\&.\&. .PD .PP فرمی که شامل `\fB+\fP\&' است، گزینه‌های جایگزین را مشخص می‌کند\&. تکمیل ابتدا با گزینه‌های پیش از نخستین `\fB+\fP\&' امتحان می‌شود\&. اگر این کار تطابقی ایجاد نکرد، تکمیل با فلگ‌های پس از `\fB+\fP\&' امتحان می‌شود و به همین ترتیب ادامه می‌یابد\&. اگر پس از آخرین `\fB+\fP\&' فلگی وجود نداشته باشد و تا آن نقطه تطابقی پیدا نشده باشد، تکمیل پیش‌فرض امتحان می‌شود\&. اگر فهرست فلگ‌ها شامل یک \fB\-t\fP همراه با نویسه \fB+\fP باشد، فهرست بعدی فلگ‌ها استفاده می‌شود حتی اگر فهرست فعلی تطابق‌هایی تولید کرده باشد\&. .PP گزینه‌های دیگری نیز در دسترس هستند که تکمیل را به بخشی از خط فرمان محدود می‌کنند؛ این قابلیت تحت عنوان «تکمیل گسترش‌یافته» شناخته می‌شود\&. .PP .SH "تکمیل گسترش‌یافته (EXTENDED COMPLETION)" .PD 0 .TP \fBcompctl \fP[ \fB\-CDT\fP ] \fIoptions\fP \fB\-x\fP \fIpattern\fP \fIoptions\fP \fB\-\fP \&.\&.\&. \fB\-\fP\fB\-\fP .TP \fB \fP[ \fIcommand\fP \&.\&.\&. ] .TP \fBcompctl \fP[ \fB\-CDT\fP ] \fIoptions\fP [ \fB\-x\fP \fIpattern\fP \fIoptions\fP \fB\-\fP \&.\&.\&. \fB\-\fP\fB\-\fP ] .TP \fB \fP[ \fB+\fP \fIoptions\fP [ \fB\-x\fP \&.\&.\&. \fB\-\fP\fB\-\fP ] \&.\&.\&. [\fB+\fP] ] [ \fIcommand\fP \&.\&.\&. ] .PD .PP فرمی که شامل `\fB\-x\fP\&' است، تکمیل گسترش‌یافته را برای دستورات داده‌شده مشخص می‌کند؛ همان‌گونه که نشان داده شده، می‌توان آن را با تکمیل جایگزین با استفاده از `\fB+\fP\&' ترکیب کرد\&. هر \fIpattern\fP به نوبت بررسی می‌شود؛ هنگامی که تطابقی یافت شود، گزینه‌های \fIoptions\fP متناظر، همان‌طور که در بخش «فلگ‌های گزینه‌ها» در بالا شرح داده شد، برای تولید گزینه‌های ممکن تکمیل استفاده می‌شوند\&. اگر هیچ \fIpattern\fP مطابقت نداشته باشد، گزینه‌های \fIoptions\fP ارائه‌شده قبل از \fB\-x\fP به کار می‌روند\&. .PP توجه داشته باشید که هر الگو باید به عنوان یک آرگومان منفرد ارائه شود و برای جلوگیری از بسط نویسه‌های فرامعنایی توسط پوسته، باید در کوتیشن قرار گیرد\&. .PP یک \fIpattern\fP از زیرالگوهایی ساخته می‌شود که با کاما از هم جدا شده‌اند؛ اگر حداقل یکی از این زیرالگوها مطابقت داشته باشد، الگو مطابقت می‌یابد (عملگر «یا»)\&. این زیرالگوها نیز به نوبه خود از زیرالگوهای دیگری تشکیل شده‌اند که با نویسه‌های فاصله از هم جدا شده و در صورتی مطابقت می‌یابند که تمام زیرالگوها مطابقت داشته باشند (عملگر «و»)\&. عنصری از زیرالگوها به شکل `\fIc\fP\fB[\fP\&.\&.\&.\fB][\fP\&.\&.\&.\fB]\fP\&' است، که در آن جفت‌براکت‌ها می‌توانند هر چند بار که لازم است تکرار شوند، و در صورتی تطابق برقرار است که هر یک از مجموعه‌های براکت‌ها مطابقت داشته باشد (یک «یا»)\&. مثال زیر این موضوع را روشن‌تر می‌سازد\&. .PP عناصر می‌توانند هر یک از موارد زیر باشند: .PP .PD 0 .TP .PD \fBs[\fP\fIstring\fP\fB]\fP\&.\&.\&. در صورتی برقرار است که کلمه جاری در خط فرمان با یکی از رشته‌های ارائه‌شده درون براکت‌ها آغاز شود\&. این \fIstring\fP حذف نمی‌شود و بخشی از تکمیل نیست\&. .TP \fBS[\fP\fIstring\fP\fB]\fP\&.\&.\&. مانند \fBs[\fP\fIstring\fP\fB]\fP است به جز اینکه \fIstring\fP بخشی از تکمیل خواهد بود\&. .TP \fBp[\fP\fIfrom\fP\fB,\fP\fIto\fP\fB]\fP\&.\&.\&. در صورتی برقرار است که شماره کلمه جاری بین یکی از جفت‌های \fIfrom\fP و \fIto\fP (شامل هر دو) باشد\&. کاما و \fIto\fP اختیاری هستند؛ مقدار \fIto\fP به صورت پیش‌فرض برابر با \fIfrom\fP است\&. اعداد می‌توانند منفی باشند: \fB\-\fP\fIn\fP به \fIn\fPـمین کلمه از انتهای خط اشاره دارد\&. .TP \fBc[\fP\fIoffset\fP\fB,\fP\fIstring\fP\fB]\fP\&.\&.\&. در صورتی برقرار است که رشته \fIstring\fP با کلمه‌ای که به اندازه \fIoffset\fP از موقعیت کلمه جاری فاصله دارد مطابقت داشته باشد\&. معمولاً \fIoffset\fP منفی خواهد بود\&. .TP \fBC[\fP\fIoffset\fP\fB,\fP\fIpattern\fP\fB]\fP\&.\&.\&. مانند \fBc\fP است اما از تطبیق الگو به جای رشته استفاده می‌کند\&. .TP \fBw[\fP\fIindex\fP\fB,\fP\fIstring\fP\fB]\fP\&.\&.\&. در صورتی برقرار است که کلمه واقع در موقعیت \fIindex\fP برابر با رشته متناظر \fIstring\fP باشد\&. توجه داشته باشید که شمارش کلمات پس از هرگونه بسط نام‌های مستعار انجام می‌گیرد\&. .TP \fBW[\fP\fIindex\fP\fB,\fP\fIpattern\fP\fB]\fP\&.\&.\&. مانند \fBw\fP است اما از تطبیق الگو استفاده می‌کند\&. .TP \fBn[\fP\fIindex\fP\fB,\fP\fIstring\fP\fB]\fP\&.\&.\&. در صورتی برقرار است که کلمه جاری حاوی \fIstring\fP باشد\&. هر چیزی تا \fIindex\fPـمین رخداد این رشته (شامل خود آن) به عنوان بخشی از تکمیل در نظر گرفته نمی‌شود، اما باقی‌مانده آن بخش تکمیل خواهد بود\&. \fIindex\fP می‌تواند برای شمارش از انتها منفی باشد: در بیشتر موارد \fIindex\fP برابر ۱ یا \-۱ خواهد بود\&. برای مثال: .RS .PP .RS .nf \fBcompctl \-s \&'`users`' \-x 'n[1,@]' \-k hosts \-\- talk\fP .fi .RE .PP معمولاً نام‌های کاربری را تکمیل می‌کند، اما اگر یک \fB@\fP پس از نام وارد کنید، نام‌های موجود در آرایه \fIhosts\fP (با این فرض که حاوی نام‌های میزبان باشد، هرچند باید خودتان این آرایه را ایجاد کنید) تکمیل خواهند شد\&. سایر دستورات مانند \fBrcp\fP را نیز می‌توان به روش مشابه مدیریت کرد\&. .RE .TP \fBN[\fP\fIindex\fP\fB,\fP\fIstring\fP\fB]\fP\&.\&.\&. مانند \fBn\fP است به جز اینکه رشته به عنوان یک رده نویسه‌ای در نظر گرفته می‌شود\&. هر چیزی تا \fIindex\fPـمین رخداد هر یک از نویسه‌های موجود در \fIstring\fP به عنوان بخشی از تکمیل به شمار نخواهد رفت\&. .TP \fBm[\fP\fImin\fP\fB,\fP\fImax\fP\fB]\fP\&.\&.\&. در صورتی برقرار است که تعداد کل کلمات بین \fImin\fP و \fImax\fP (شامل هر دو) قرار گیرد\&. .TP \fBr[\fP\fIstr1\fP\fB,\fP\fIstr2\fP\fB]\fP\&.\&.\&. در صورتی برقرار است که مکان‌نما بعد از کلمه‌ای با پیشوند \fIstr1\fP قرار داشته باشد\&. اگر کلمه‌ای با پیشوند \fIstr2\fP نیز در خط فرمان بعد از کلمه منطبق با \fIstr1\fP وجود داشته باشد، تنها در صورتی تطابق برقرار است که مکان‌نما قبل از این کلمه باشد\&. اگر کاما و \fIstr2\fP حذف شوند، در صورتی که مکان‌نما بعد از کلمه‌ای با پیشوند \fIstr1\fP باشد مطابقت می‌یابد\&. .TP \fBR[\fP\fIstr1\fP\fB,\fP\fIstr2\fP\fB]\fP\&.\&.\&. مانند \fBr\fP است اما به جای آن از تطبیق الگو استفاده می‌کند\&. .TP \fBq[\fP\fIstr\fP\fB]\fP\&.\&.\&. در صورتی برقرار است که کلمه‌ای که در حال حاضر تکمیل می‌شود در تک‌کوتیشن قرار داشته باشد و \fIstr\fP با حرف `s\&' آغاز شود، یا اگر تکمیل در دابل‌کوتیشن انجام شود و \fIstr\fP با حرف `d\&' شروع شود، یا اگر تکمیل در بک‌تیک انجام شود و \fIstr\fP با حرف `b\&' آغاز گردد\&. .PP .SH "مثال (EXAMPLE)" .PP .RS .nf \fBcompctl \-u \-x \&'s[+] c[\-1,\-f],s[\-f+]' \e \-g \&'~/Mail/*(:t)' \- 's[\-f],c[\-1,\-f]' \-f \-\- mail\fP .fi .RE .PP این دستور به صورت زیر تفسیر می‌شود: .PP اگر دستور جاری \fBmail\fP باشد، آنگاه .PP .RS .nf اگر ((کلمه جاری با \fB+\fP شروع شود و کلمه قبلی \fB\-f\fP باشد) یا (کلمه جاری با \fB\-f+\fP شروع شود))، آنگاه بخش غیردایرکتوری (اصلاح‌کننده الگویابی `\fB:t\fP\&') فایل‌های موجود در دایرکتوری \fB~/Mail\fP را تکمیل کن؛ در غیر این صورت .PP اگر کلمه جاری با \fB\-f\fP شروع شود یا کلمه قبلی \fB\-f\fP باشد، آنگاه هر فایلی را تکمیل کن؛ در غیر این صورت .PP نام‌های کاربری را تکمیل کن\&. .fi .RE