זוהי הפקודה zshcompsys שניתן להריץ בספק האירוח החינמי של OnWorks באמצעות אחת מתחנות העבודה המקוונות החינמיות שלנו, כגון Ubuntu Online, Fedora Online, אמולטור מקוון של Windows או אמולטור מקוון של MAC OS.
תָכְנִית:
שֵׁם
zshcompsys - מערכת השלמת zsh
תיאור
זה מתאר את קוד המעטפת עבור מערכת ההשלמה ה"חדשה", המכונה compsys. זה
כתוב בפונקציות מעטפת המבוססות על התכונות המתוארות ב zshcompwid(1).
המאפיינים הם קונטקסטואליים, רגישים לנקודה שבה מתחילה ההשלמה. רבים מהם.
השלמות כבר מסופקות. מסיבה זו, משתמש יכול לבצע משימות רבות
מבלי לדעת פרטים נוספים מעבר לאופן שבו יש לאתחל את המערכת, כפי שמתואר להלן.
באתחול.
ההקשר שקובע איזו השלמה תתבצע עשוי להיות
· מיקום ארגומנט או אפשרות: אלה מתארים את המיקום בשורת הפקודה ב
איזו השלמה מבוקשת. לדוגמה `ארגומנט ראשון ל-rmdir, המילה
לאחר השלמתו, יוצרים שמות לספרייה';
· הקשר מיוחד, המציין אלמנט בתחביר של המעטפת. לדוגמה `מילה
בעמדת פקודה' או `כתב תחתי של מערך'.
מפרט הקשר מלא מכיל אלמנטים נוספים, כפי שנפרט בהמשך.
מלבד שמות פקודות והקשרים, המערכת משתמשת בשני מושגים נוספים, סגנונות ו
תיוגיםאלה מספקים דרכים למשתמש להגדיר את התנהגות המערכת.
לתגיות תפקיד כפול. הן משמשות כמערכת סיווג להתאמות, בדרך כלל
המציין סוג של אובייקט שהמשתמש עשוי להזדקק להבחנה. לדוגמה, כאשר
השלמת הטיעונים של ls פקודה שהמשתמש עשוי להעדיף לנסות קבצים לפני
ספריות, כך ששני אלה הם תגיות. הם מופיעים גם כאלמנט הימני ביותר ב-
מפרט הקשר.
סגנונות משנים פעולות שונות של מערכת ההשלמה, כגון עיצוב פלט, אך
גם אילו סוגי משלימים משמשים (ובאיזה סדר), או אילו תגיות נבדקות.
סגנונות עשויים לקבל ארגומנטים ומנוהלים באמצעות ה- zstyle הפקודה המתוארת ב- ראה
zshmodules(1).
לסיכום, תגיות מתארות מה אובייקטי ההשלמה הם, וסגנון אֵיך הם אמורים להיות
הושלם. בנקודות שונות של הביצוע, מערכת ההשלמה בודקת אילו סגנונות
ו/או תגיות מוגדרות עבור ההקשר הנוכחי, ומשתמש בהן כדי לשנות את התנהגותן.
התיאור המלא של טיפול בהקשר, אשר קובע כיצד תגים ואלמנטים אחרים של
ההשפעה של ההקשר על התנהגות הסגנונות, מתוארת להלן במערכת ההשלמה
תְצוּרָה.
כאשר מתבקשת השלמה, נקראת פונקציית משגר; ראה תיאור של
_main_complete ברשימת פונקציות הבקרה למטה. מוקדן זה מחליט איזו
יש לקרוא לפונקציה כדי לייצר את ההשלמות, וקוראת לה. התוצאה מועברת
לאחד או יותר משלימים, פונקציות המיישמות אסטרטגיות השלמה אינדיבידואליות:
השלמה פשוטה, תיקון שגיאות, השלמה עם תיקון שגיאות, בחירת תפריט,
וכו '
באופן כללי יותר, פונקציות המעטפת הכלולות במערכת ההשלמה הן משני סוגים:
· אלו שמתחילים `comp' יש לקרוא להם ישירות; יש רק מעטים כאלה;
· אלו שמתחילים `_' נקראות על ידי קוד ההשלמה. פונקציות המעטפת של זה
קבוצה, אשר מיישמת התנהגות השלמה ועשויה להיות קשורה להקשות מקלדת, הן
המכונים 'ווידג'טים'. אלה מתרבים ככל שנדרשות השלמות חדשות.
אִתחוּל
אם המערכת הותקנה במלואה, קריאה לפונקציית המעטפת אמורה להספיק.
קומפיניט מקובץ האתחול שלך; עיין בסעיף הבא. עם זאת, הפונקציה
קומפסטיל יכול להיות מופעל על ידי משתמש כדי להגדיר היבטים שונים של מערכת ההשלמה.
בְּדֶרֶך כְּלַל, קומפסטיל יכניס קוד לתוך .zshrc, למרות שאם זה לא ניתן לכתיבה, זה
ישמור אותו בקובץ אחר ויגיד לך את מיקום הקובץ. שים לב שזה תלוי בך
כדי לוודא שהשורות שנוספו ל .zshrc מופעלים בפועל; ייתכן שתצטרך, למשל
להעביר אותם למקום מוקדם יותר בקובץ אם .zshrc בדרך כלל חוזר מוקדם. כל עוד
אם תשמור את כולם יחד (כולל שורות ההערות בהתחלה ובסוף), אתה יכול
שידור חוזר קומפסטיל והוא יאתר וישנה נכון את השורות הללו. שימו לב, עם זאת,
שכל קוד שתוסיף לקטע זה באופן ידני עלול ללכת לאיבוד אם תפעיל אותו שוב
קומפסטיל, למרות ששורות המשתמשות בפקודה `zstyleיש לטפל 'באלגנטיות'.
הקוד החדש ייכנס לתוקף בפעם הבאה שתפעילו את המעטפת, או תפעילו אותה .zshrc ביד; שם
יש גם אפשרות לגרום להם להיכנס לתוקף באופן מיידי. עם זאת, אם קומפסטיל יש ל
הסרת הגדרות, תצטרך להפעיל מחדש את המעטפת כדי לראות את השינויים.
לרוץ קומפסטיל תצטרך לוודא שהוא נמצא בספרייה המוזכרת ב fpath
פרמטר, שכבר אמור להיות המקרה אם zsh הוגדר כראוי כל עוד שלך
קבצי ההפעלה אינם מסירים את הספריות המתאימות מ fpathאז זה חייב להיות
טעינה אוטומטית (`autoload -U קומפסטילמומלץ '). ניתן לבטל את ההתקנה בכל עת
הזמן שבו מתבקש ממך לספק מידע, והזמן שלך .zshrc לא ישתנה כלל;
שינויים מתרחשים רק ממש בסוף, היכן שמתבקשים מכם במפורש
אִשׁוּר.
השתמש of קומפיניט
סעיף זה מתאר את השימוש ב קומפיניט לאתחל את ההשלמה עבור הנוכחי
סשן כאשר נקרא ישירות; אם ביצעת ריצה קומפסטיל זה ייקרא אוטומטית
משלך .zshrc.
כדי לאתחל את המערכת, הפונקציה קומפיניט צריך להיות בספרייה המוזכרת ב-
fpath פרמטר, ויש לטעון אותו אוטומטית (`autoload -U קומפיניטמומלץ), ו
ואז רץ פשוט כ-`קומפיניטזה יגדיר כמה פונקציות תועלת, יסדר את כל
פונקציות המעטפת הדרושות ייטענו אוטומטית, ולאחר מכן יגדיר מחדש את כל הווידג'טים ש
בצעו השלמה כדי להשתמש במערכת החדשה. אם אתם משתמשים ב תפריט-בחר ווידג'ט, שהוא חלק מ
מה היא zsh/complist מודול, עליך לוודא שהמודול נטען לפני הקריאה
ל קומפיניט כך שגם הווידג'ט הזה יוגדר מחדש. אם סגנונות השלמה (ראה להלן) הם
מוגדר לבצע הרחבה וכן השלמה כברירת מחדל, ומקש TAB מחויב ל
להרחיב-או-להשלים, קומפיניט יקשר את זה מחדש מילה שלמה; זה הכרחי כדי להשתמש ב-
צורת ההרחבה הנכונה.
אם תצטרך להשתמש בפקודות ההשלמה המקוריות, עדיין תוכל לקשור מפתחות ל-
ווידג'טים ישנים על ידי הוספת `.' לפני שם הווידג'ט, לדוגמה `.הרחבה או השלמה'.
כדי לזרז את הריצה של קומפיניט, ניתן לגרום לו לייצר תצורה dumped ש
ייקרא בהפעלות עתידיות; זוהי ברירת המחדל, אך ניתן לכבות אותה על ידי
קוראים קומפיניט עם האופציה -Dהקובץ שנשלח הוא .zcompdump באותה ספרייה
כמו קבצי האתחול (כלומר $ZDOTDIR or $ HOME); לחלופין, ניתן להשתמש בשם קובץ מפורש
ניתן על ידי `קומפיניט -d dumpfileהקריאה הבאה של קומפיניט יקרא את הנזרק
קובץ במקום לבצע אתחול מלא.
אם מספר קבצי ההשלמה משתנה, קומפיניט יזהה זאת ויפיק חדש
קובץ dump. עם זאת, אם שם הפונקציה או הארגומנטים בשורה הראשונה של
#compdef שינוי הפונקציה (כמתואר להלן), הכי קל למחוק את קובץ ה-dump על ידי
יד כך קומפיניט ייצור אותו מחדש בפעם הבאה שהוא יופעל. הבדיקה שבוצעה כדי
לבדוק אם יש פונקציות חדשות שניתן להשמיט על ידי מתן האפשרות -Cבמקרה זה ה-
קובץ dump ייווצר רק אם אין כזה כבר קיים.
השלכת הקרקע מתבצעת למעשה על ידי פונקציה אחרת, קומפדמפ, אבל תצטרכו רק לרוץ
זאת בעצמך אם תשנה את התצורה (למשל באמצעות compdef) ואז רוצה לזרוק
החדש. שם קובץ ה-dump הישן יישמר למטרה זו.
אם הפרמטר _compdir מוגדר, קומפיניט משתמש בו כספרייה שבה השלמה
ניתן למצוא פונקציות; זה הכרחי רק אם הן עדיין לא נמצאות בפונקציה
נתיב חיפוש.
מטעמי ביטחון קומפיניט גם בודק אם מערכת ההשלמה תשתמש בקבצים שלא
בבעלות root או של המשתמש הנוכחי, או קבצים בתיקיות שהן world- או
קבצים הניתנים לכתיבה בקבוצה או שאינם בבעלות root או המשתמש הנוכחי. אם קבצים כאלה או
נמצאות ספריות, קומפיניט ישאל אם באמת יש להשתמש במערכת ההשלמה.
כדי להימנע מבדיקות אלו ולגרום לכל הקבצים שנמצאו להיות בשימוש מבלי לבקש, השתמש באפשרות -u,
וליצור קומפיניט התעלם בשקט מכל הקבצים והספריות הלא מאובטחים השתמש באפשרות -i.
בדיקת אבטחה זו מדלגת לחלוטין כאשר -C ניתנת אפשרות.
ניתן לבצע שוב את בדיקת האבטחה בכל עת על ידי הפעלת הפונקציה מחשב. זה
אותו צ'ק בו משתמשים קומפיניט, אבל כאשר הוא מבוצע ישירות, כל שינוי ב fpath יש לו
מקומיים לפונקציה כך שלא יישמרו. הספריות שיש לבדוק עשויות להיות
מועברים כארגומנטים; אם לא ניתנים כאלה, מחשב שימושים fpath ו _compdir כדי למצוא
ספריות מערכת השלמה, הוספת חסרות ל fpath לפי הצורך. כדי לאלץ
בדיקה של הספריות המדויקות הנמצאות כעת בשמותיהן fpath, הגדר _compdir למחרוזת ריקה
לפני שמתקשרים מחשב or קומפיניט.
הפונקציה bashcompinit מספק תאימות עם השלמה ניתנת לתכנות של bash
מערכת. כאשר היא פועלת היא תגדיר את הפונקציות, compgen ו להשלים אשר תואמים ל
את ה-bash builtins עם אותם שמות. לאחר מכן ניתן יהיה להשתמש בהשלמה
מפרטים ופונקציות שנכתבו עבור bash.
טעינה אוטומטית קבצים
המוסכמה לגבי פונקציות שנטענות אוטומטית בהשלמה היא שהן מתחילות ב-
קו תחתון; כפי שכבר הוזכר, ה- fpath/FPATH הפרמטר חייב להכיל את הספרייה ב
שבו הם מאוחסנים. אם ZSH הותקן כראוי במערכת שלך, אז fpath/FPATH
מכיל אוטומטית את הספריות הנדרשות עבור הפונקציות הסטנדרטיות.
עבור התקנות לא גמורות, אם קומפיניט לא מוצא מספיק קבצים שמתחילים ב-
קו תחתון (פחות מעשרים) בנתיב החיפוש, הוא ינסה למצוא עוד על ידי הוספת ה-
בספרייה _compdir לנתיב החיפוש. אם לספרייה זו יש ספריית משנה בשם בסיס,
כל ספריות המשנה יתווספו לנתיב. יתר על כן, אם ספריית המשנה בסיס יש
תת-ספרייה בשם ליבה, קומפיניט יוסיף את כל תת-הספריות של תת-הספריות ל-
נתיב: זה מאפשר לפונקציות להיות באותו פורמט כמו ב- ZSH מָקוֹר
הפצה.
מתי קומפיניט כאשר הוא מופעל, הוא מחפש את כל הקבצים הנגישים דרך fpath/FPATH וקורא את
השורה הראשונה של כל אחד מהם. שורה זו צריכה להכיל אחת מהתגיות המתוארות להלן.
קבצים שהשורה הראשונה שלהם אינה מתחילה באחת התגיות הללו אינם נחשבים כחלק
של מערכת ההשלמה ולא יטופלו במיוחד.
התגיות הן:
#compdef שם ... [ -{p|P} דפוס ... [ -N שם ... ] ]
הקובץ ייטען אוטומטית והפונקציה המוגדרת בו תיקרא
בעת השלמת שםs, שכל אחד מהם הוא שם של פקודה ש
יש להשלים ארגומנטים או אחד ממספר הקשרים מיוחדים בצורה
-הקשר- המתואר להלן.
כל אחד שם יכול להיות גם בצורה של `cmd=שרות'. בעת השלמת הפקודה cmd,
הפונקציה בדרך כלל מתנהגת כאילו הפקודה (או ההקשר המיוחד) שרות היה
מושלמים במקום זאת. זה מספק דרך לשנות את התנהגותם של
פונקציות שיכולות לבצע השלמות רבות ושונות. זה מיושם על ידי
הגדרת הפרמטר שירות בעת קריאה לפונקציה; הפונקציה עשויה לבחור
לפרש זאת כרצונו, ופונקציות פשוטות יותר כנראה יתעלמו מכך.
אם #compdef השורה מכילה אחת מהאפשרויות -p or -P, המילים הבאות הן
נחשבים כתבניות. הפונקציה תיקרא כאשר יבוצע ניסיון השלמה עבור
פקודה או הקשר שמתאימים לאחת מהתבניות. האפשרויות -p ו -P יש לו
משמש לציון דפוסים שיש לנסות לפני או אחרי השלמות אחרות
בהתאמה. לפיכך -P עשוי לשמש לציון פעולות ברירת מחדל.
האפשרות -N משמש לאחר רשימה הבאה -p or -P; זה מציין כי הנותרים
מילים כבר לא מגדירות דפוסים. ניתן לעבור בין השלושה
אפשרויות כמה פעמים שצריך.
#compdef -k סגנון רצף מפתח ...
אפשרות זו יוצרת ווידג'ט שמתנהג כמו הווידג'ט המובנה סגנון וקושר אותו אליו
הנתון רצף מפתחים, אם בכלל. ה סגנון חייב להיות אחד מהווידג'טים המובנים ש
לבצע השלמה, כלומר מילה שלמה, מחק-char-or-list, להרחיב-או-להשלים,
הרחבה-או-השלמה-קידומת, רשימה-בחירות, תפריט מלא, תפריט-הרחב-או-השלם, או
הפוך-תפריט-שלם. אם zsh/complist המודול נטען (ראה zshmodules(1))
הווידג'ט תפריט-בחר זמין גם כן.
כאשר אחד מ- רצף מפתחכאשר s מוקלד, הפונקציה בקובץ תופעל כדי
יצירת ההתאמות. שימו לב שמפתח לא יקושר מחדש אם הוא כבר היה קשור (זה
הוא, היה קשור למשהו אחר מלבד מפתח לא מוגדר). הווידג'ט שנוצר מכיל את
אותו שם כמו הקובץ וניתן לקשור אותו לכל מפתח אחר באמצעות bindkey כרגיל.
#compdef -K שם יישומון סגנון רצף מפתח [ שם סגנון seq ... ]
זה דומה ל -k אלא שרק אחד רצף מפתח ניתן לתת טיעון בעד
כל אחד שם יישומון סגנון זוג. עם זאת, כל קבוצת שלושת הארגומנטים עשויה להיות
חוזר על עצמו עם קבוצה שונה של ארגומנטים. שימו לב במיוחד ש-
שם יישומון חייב להיות שונה בכל קבוצה. אם זה לא מתחיל ב-`_זה ירצה
יתווסף. ה- שם יישומון לא אמור להתנגש עם שם של אף ווידג'ט קיים:
שמות המבוססים על שם הפונקציה הם השימושיים ביותר. לדוגמה,
#compdef -K _foo_complete מילה שלמה "^X^C"
רשימת_פו רשימה-בחירות "^X^D"
(הכל בשורה אחת) מגדיר ווידג'ט _foo_complete להשלמה, מחויב ל-`^X^C',
ווידג'ט רשימת_פו לרישום, מחויב ל-`^X^D'.
#טעינה אוטומטית [ אפשרויות ]
פונקציות עם ה- #טעינה אוטומטית תגים מסומנים לטעינה אוטומטית אך אינם מסומנים אחרת
מטופלים במיוחד. בדרך כלל יש לקרוא להם מתוך אחד מה
פונקציות השלמה. כלשהן אפשרויות המסופק יועבר אל autoload מובנה;
שימוש טיפוסי הוא +X כדי לאלץ את הפונקציה להיטען באופן מיידי. שים לב ש-
-U ו -z דגלים תמיד מתווספים באופן מרומז.
השמיים # הוא חלק משם התגית ואין רווח לבן אחריו. #compdef תיוגים
להשתמש compdef הפונקציה המתוארת להלן; ההבדל העיקרי הוא ששמו של
הפונקציה מסופקת באופן מרומז.
ההקשרים המיוחדים שעבורם ניתן להגדיר פונקציות השלמה הם:
ערך-מערך-
הצד הימני של מערך-הקצאה (`שם=(...)')
פרמטר -brace-parameter-
שם הרחבת פרמטר בתוך סוגריים מרובעים (`${...}')
-הקצאת-פרמטר-
שם הפרמטר בהקצאה, כלומר בצד שמאל של `='
-פְּקוּדָה-
מילה בתפקיד פיקוד
-מַצָב-
מילה בתוך תנאי (`[[...]]')
-בְּרִירַת מֶחדָל-
כל מילה שאין לה השלמה אחרת מוגדרת
-לְהִשְׁתַווֹת-
מילה שמתחילה בסימן שוויון
-רֵאשִׁית-
זה נעשה לפני כל פונקציית השלמה אחרת. הפונקציה הנקראת עשויה להגדיר
מה היא _compskip פרמטר לאחד מערכים שונים: את כלאין השלמה נוספת
ניסיון; מחרוזת המכילה את תת-המחרוזת דפוסיאין השלמת תבנית
פונקציות ייקראו; מחרוזת המכילה ברירת מחדלהפונקציה עבור ה-
`-בְּרִירַת מֶחדָל-ה-'context לא ייקרא, אבל פונקציות המוגדרות עבור פקודות ייקראו.
-מתמטיקה- בתוך הקשרים מתמטיים, כגון `((...))'
-פָּרָמֶטֶר-
שם הרחבת הפרמטר (`$...')
-הפניה-
המילה שאחרי אופרטור ניתוב מחדש.
-כתב תחתי-
התוכן של כתב תחתי של פרמטר.
-טילדה-
אחרי טילדה ראשונית (`~'), אבל לפני הקו הנטוי הראשון במילה.
-עֵרֶך-
בצד ימין של מטלה.
מימושים ברירת מחדל מסופקים עבור כל אחד מההקשרים הללו. ברוב המקרים,
הקשר -הקשר- מיושם על ידי פונקציה מתאימה _הקשר, למשל ה-
הקשר-טילדה-' והפונקציה `_טילדה').
ההקשרים -הפניה- ו -עֵרֶך- לאפשר מידע נוסף ספציפי להקשר.
(באופן פנימי, זה מטופל על ידי הפונקציות עבור כל הקשר הקוראות לפונקציה)
_לְשַׁגֵר.) המידע הנוסף נוסף מופרד באמצעות פסיקים.
כדי להתאים -הפניה- בהקשר, המידע הנוסף הוא בצורה של `-הפניה-,op,הפקודה',
איפה op הוא אופרטור ההפניה ו הפקודה הוא שם הפקודה בשורה.
אם עדיין אין פקודה בשורה, ה- הפקודה השדה יהיה ריק.
כדי להתאים -עֵרֶך- בהקשר, הצורה היא `-עֵרֶך-,שם,הפקודה', איפה שם הוא שמו של ה-
פרמטר בצד שמאל של ההקצאה. במקרה של אלמנטים של
מערך אסוציאטיבי, לדוגמה `assoc=(מפתח ', שם מורחב ל-`שם-מפתחב
הקשרים מיוחדים מסוימים, כגון השלמה אחרי `לעשות CFLAGS=', ה הפקודה חלק נותן
שם הפקודה, כאן לעשות; אחרת זה ריק.
אין צורך להגדיר השלמות ספציפיות לחלוטין מכיוון שהפונקציות המסופקות יהיו
נסה ליצור השלמות על ידי החלפה הדרגתית של האלמנטים ב-`-בְּרִירַת מֶחדָל-'. ל
לדוגמה, בעת השלמה לאחר `פו=', _עֵרֶך אנסה את השמות-ערך-,פו,(הערה
הריק הפקודה חלק), `ערך-,foo, ברירת מחדל-ו--ערך-,-ברירת מחדל-,-ברירת מחדל-', בזה
סדר, עד שהוא מוצא פונקציה לטפל בהקשר.
לדוגמא:
compdef _קבצים -g "*.עֵץ"' '-הפניה-,2>,-ברירת מחדל-'
משלים קבצים התואמים `*.עֵץאחרי2> ' עבור כל פקודה ללא פרטים נוספים
מטפל מוגדר.
גַם:
compdef _פו -ערך-,-ברירת מחדל-,-ברירת מחדל-
מציין את זה _פו מספק השלמות עבור ערכי פרמטרים שאין עבורם פונקציות מיוחדות
הפונקציה הוגדרה. זה בדרך כלל מטופל על ידי הפונקציה _עֵרֶך עצמו.
אותם כללי חיפוש משמשים בעת חיפוש סגנונות (כמתואר להלן); לדוגמה
zstyle ':completion:*:*:-redirect-,2>,*:*' תבניות-קבצים '*.עֵץ'
היא דרך נוספת לבצע השלמה לאחר `2> ' קבצים מלאים תואמים `*.עֵץ'.
פונקציות
הפונקציה הבאה מוגדרת על ידי קומפיניט ואפשר להתקשר אליו ישירות.
compdef [ -יין ] פונקציה שם ... [ -{p|P} דפוס ... [ -N שם ...]]
compdef -d שם ...
compdef -k [ -א ] פונקציה סגנון רצף מפתח [ רצף מפתח ... ]
compdef -K [ -א ] פונקציה שם סגנון רצף מפתחות [ שם סגנון seq ... ]
הצורה הראשונה מגדירה את פונקציה לקרוא להשלמה בהקשרים הנתונים כ
מתואר עבור #compdef תג למעלה.
לחלופין, כל הארגומנטים יכולים להיות בעלי הצורה `cmd=שרותכאן שרות
היה צריך להיות מוגדר כבר על ידי `cmd1=שרותשורות בפנים #compdef קבצים, כמו
שתואר לעיל. הטיעון בעד cmd יושלם באותו אופן כמו
שרות.
השמיים פונקציה ארגומנט יכול לחלופין להיות מחרוזת המכילה כמעט כל קליפה
קוד. אם המחרוזת מכילה סימן שוויון, האמור לעיל יקבל עדיפות. ה-
אוֹפְּצִיָה -e ניתן להשתמש בו כדי לציין שהארגומנט הראשון יוערך כקליפה
קוד גם אם הוא מכיל סימן שוויון. המחרוזת תבוצע באמצעות הערכה
פקודה מובנית ליצירת השלמות. זה מספק דרך להימנע מהצורך
הגדר פונקציית השלמה חדשה. לדוגמה, כדי להשלים קבצים המסתיימים ב-`.h' כפי ש
ארגומנטים לפקודה Foo:
compdef _קבצים -g "*.h"' Foo
האפשרות -n מונע השלמות שכבר הוגדרו עבור הפקודה או ההקשר
מפני כתיבה מחדש.
האפשרות -d מוחק כל השלמה שהוגדרה עבור הפקודה או ההקשרים המפורטים.
השמיים שםעשוי להכיל גם -p, -P ו -N אפשרויות כפי שתואר עבור #compdef תָג.
ההשפעה על רשימת הארגומנטים זהה, מעבר בין הגדרות של
תבניות שנוסו בתחילה, תבניות שנוסו לבסוף, ופקודות והקשרים רגילים.
הפרמטר $_compskip ניתן להגדיר על ידי כל פונקציה המוגדרת עבור הקשר של תבנית.
אם הוא מוגדר לערך המכיל את תת-המחרוזת `דפוסיאף אחד מה-
pattern-functions ייקרא; אם הוא מוגדר לערך המכיל את תת-המחרוזת
`את כל', לא תיקרא אף פונקציה אחרת.
הטופס עם -k מגדיר ווידג'ט בעל שם זהה ל- פונקציה זה יהיה
קרא לכל אחד מה רצף מפתחזה כמו ה- #compdef -k תָג. ה
הפונקציה צריכה לייצר את ההשלמות הנדרשות ובכל מקרה תתנהג כמו ה-
ווידג'ט מובנה ששמו ניתן כ- סגנון ארגומנט. הווידג'טים שניתן להשתמש בהם עבור
הם: מילה שלמה, מחק-char-or-list, להרחיב-או-להשלים,
הרחבה-או-השלמה-קידומת, רשימה-בחירות, תפריט מלא, תפריט-הרחב-או-השלם,
ו הפוך-תפריט-שלם, בנוסף ל תפריט-בחר אם zsh/complist מודול הוא
טעון. האפשרות -n מונע את קשירת המפתח אם הוא כבר קשור מדי ל
משהו אחר מלבד מפתח לא מוגדר.
הטופס עם -K דומה ומגדיר ווידג'טים מרובים המבוססים על אותו הדבר
פונקציה, שכל אחד מהם דורש את קבוצת שלושת הארגומנטים שם, סגנון ו
רצף מפתחותהשפעה, כאשר שני האחרונים הם עבור -k והראשון חייב להיות ייחודי
שם הווידג'ט שמתחיל בקו תחתון.
בכל מקום שישים, ה- -a האפשרות הופכת את פונקציה ניתן לטעינה אוטומטית, שווה ערך ל-
autoload -U פונקציה.
הפונקציה compdef ניתן להשתמש בו כדי לקשר פונקציות השלמה קיימות עם חדשות
פקודות. לדוגמה,
compdef _pids Foo
משתמש בפונקציה _pids כדי להשלים מזהי תהליכים עבור הפקודה Foo.
שימו לב גם ל _gnu_generic הפונקציה המתוארת להלן, אשר ניתן להשתמש בה להשלמת אפשרויות
עבור פקודות שמבינות את ה-`- עזרהאפשרות.
סִיוּם מערכת תְצוּרָה
סעיף זה נותן סקירה קצרה של אופן פעולת מערכת ההשלמה, ועוד
פירוט כיצד משתמשים יכולים להגדיר כיצד ומתי נוצרות התאמות.
סקירה כללית
כאשר מתבצע ניסיון השלמה איפשהו בשורת הפקודה, מערכת ההשלמה מתחילה
בניית ההקשר. ההקשר מייצג את כל מה שהקליפה יודעת על
משמעות שורת הפקודה וחשיבות מיקום הסמן. זה לוקח
חשבון של מספר דברים, כולל מילת הפקודה (כגון `grep' או 'ZSH') ו
אפשרויות שהמילה הנוכחית עשויה להיות עבורן ארגומנט (כגון `-oאפשרות ל ZSH אשר
מקבל אופציית מעטפת כארגומנט).
ההקשר מתחיל בצורה מאוד כללי ("אנחנו מתחילים השלמה") והופך ליותר
ספציפי ככל שנלמד יותר ("המילה הנוכחית נמצאת במיקום שבדרך כלל משמש כפקודה
"שם" או "המילה הנוכחית עשויה להיות שם משתנה" וכן הלאה). לכן ההקשר
ישתנה במהלך אותה קריאה למערכת ההשלמה.
מידע הקשר זה מרוכז למחרוזת המורכבת משדות מרובים
מופרדים באמצעות נקודתיים, המכונים פשוט "ההקשר" בשארית
תיעוד. שימו לב שמשתמש במערכת ההשלמה לעיתים רחוקות צריך לחבר
מחרוזת הקשר, אלא אם כן, לדוגמה, פונקציה חדשה נכתבת כדי לבצע השלמה
עבור פקודה חדשה. מה שמשתמש עשוי להידרש לעשות הוא לחבר פקודה סגנון דפוס, שהוא
הותאם להקשר בעת הצורך כדי לחפש אפשרויות תלויות הקשר שמגדירות
מערכת ההשלמה.
הפסקאות הבאות מסבירות כיצד מורכב הקשר בתוך פונקציית ההשלמה
סוויטה. לאחר מכן, דיון כיצד סגנונות מוגדרים. סגנונות קובעים כאלה
דברים כמו איך ההתאמות נוצרות, בדומה לאפשרויות מעטפת אבל עם הרבה יותר
שליטה. הם מוגדרים באמצעות zstyle פקודה מובנית (ראה zshmodules(1)).
מחרוזת ההקשר תמיד מורכבת מקבוצה קבועה של שדות, המופרדים באמצעות נקודתיים ועם
נקודתיים מובילים לפני הראשונה. שדות שעדיין אינם ידועים נותרים ריקים, אך ה-
נקודתיים מסביב מופיעים בכל מקרה. השדות תמיד בסדר
:סִיוּם:פונקציה:משלים:הפקודה:טענה:תגיש להם את המשמעות הבאה:
· המחרוזת הליטרלית השלמה, אומר שסגנון זה משמש את ההשלמה
מערכת. זה מבדיל את ההקשר מאלה המשמשים, למשל, zle
ווידג'טים ופונקציות ZFTP.
· פונקציה, אם השלמה נקראת מווידג'ט בעל שם ולא דרך ה-
מערכת השלמה רגילה. בדרך כלל זה ריק, אך הוא מוגדר על ידי מיוחד
ווידג'טים כגון ניבוי-על והפונקציות השונות ב- יישומון ספרייה של
התפלגות לשם הפונקציה הזו, לרוב בצורה מקוצרת.
· משלים פעיל כעת, שם הפונקציה ללא הסימן המוביל
קו תחתון ועם קו תחתון אחר שהומר למקפים. `משלים` נמצא ב
שליטה כוללת על אופן ביצוע ההשלמה;להשלים'זה הכי פשוט,
אבל קיימים משלימים אחרים כדי לבצע משימות קשורות כגון תיקון, או כדי
לשנות את ההתנהגות של משלים מאוחר יותר. ראה סעיף 'פונקציות בקרה'
להלן למידע נוסף.
· הפקודה או ספיישל -הקשר-, בדיוק ברגע שזה נראה בעקבות ה #compdef תג
או compdef פונקציה. פונקציות השלמה עבור פקודות שיש להן תת-פקודות.
בדרך כלל משנים שדה זה כך שיכיל את שם הפקודה ואחריו סימן מינוס
סימן ופקודת המשנה. לדוגמה, פונקציית ההשלמה עבור ה- cvs הפקודה
מגדיר שדה זה ל cvs-add בעת השלמת טיעונים ל- להוסיף פקודה משנה.
· טענה; זה מציין באיזה ארגומנט שורת פקודה או אפשרות אנחנו נמצאים
משלים. עבור ארגומנטים של פקודה, זה בדרך כלל מקבל את הצורה הבאה טַעֲנָה-n, שם
n הוא מספר הארגומנט, ועבור ארגומנטים לאפשרויות הצורה אוֹפְּצִיָה-לִבחוֹר-n
איפה n הוא מספר הארגומנט של האפשרות לִבחוֹרעם זאת, זהו רק ה-
במקרה שורת הפקודה מנותחת עם אפשרויות וארגומנטים סטנדרטיים בסגנון יוניקס,
כל כך הרבה השלמות לא קובעות זאת.
· תגכפי שתואר קודם לכן, תגים משמשים להבחנה בין הסוגים
של התאמות שפונקציית השלמה יכולה לייצר בהקשר מסוים. כל השלמה
הפונקציה יכולה להשתמש בכל שם תג שתרצה, אך ניתנת רשימה של הנפוצים יותר.
לְהַלָן.
ההקשר מורכב בהדרגה ככל שהפונקציות מבוצעות, החל מ-
נקודת הכניסה העיקרית, אשר מוסיפה :סִיוּם: ו פונקציה אלמנט במידת הצורך. ה
המשלים ואז מוסיף את משלים אלמנט. ההשלמה ההקשרית מוסיפה את הפקודה ו
טענה אפשרויות. לבסוף, ה תג נוסף כאשר סוגי ההשלמה ידועים. עבור
לדוגמה, שם ההקשר
:completion::complete:dvips:option-o-1:files
אומר שנוסה השלמה רגילה כארגומנט הראשון לאופציה -o של
הפקודה dvips:
dvips -o ...
ופונקציית ההשלמה תיצור שמות קבצים.
בדרך כלל ייעשה ניסיון השלמה עבור כל התגים האפשריים בסדר שניתן על ידי ההשלמה
פונקציה. עם זאת, ניתן לשנות זאת באמצעות ה- סדר תגיות סגנון. השלמה היא אז
מוגבל לרשימת התגים הנתונים בסדר הנתון.
השמיים עזרה_שלמה הפקודה bindable מציגה את כל ההקשרים והתגים הזמינים עבור
השלמה בנקודה מסוימת. זה מספק דרך קלה למציאת מידע עבור
סדר תגיות וסגנונות אחרים. זה מתואר בסעיף 'פקודות ניתנות לקישור' להלן.
בעת חיפוש סגנונות, מערכת ההשלמה משתמשת בשמות הקשר מלאים, כולל התגית.
לכן, בדיקת הערך של סגנון מורכבת משני דברים: ההקשר, שהוא
מותאם לדוגמת הסגנון הספציפית ביותר (המתאימה ביותר), ולשם הסגנון
עצמו, אשר חייב להיות תואם במדויק. הדוגמאות הבאות מדגימות את הסגנון הזה
דוגמאות עשויות להיות מוגדרות באופן רופף עבור סגנונות החלים באופן רחב, או מוגדרות בצורה הדוקה כמו
רצוי עבור סגנונות החלים בנסיבות צרות יותר.
לדוגמה, פונקציות השלמה רבות יכולות לייצר התאמות בצורה פשוטה ומילולית
ולהשתמש מִלוּלִי סגנון כדי להחליט באיזו צורה יש להשתמש. כדי לבצע את כל הפונקציות הללו
השתמש בצורה המילולית, שים
zstyle ':סִיוּם:*' מִלוּלִי כן
בקובץ אתחול (כנראה .zshrc). זה נותן את מִלוּלִי סגנון הערך כן בכל
הקשר בתוך מערכת ההשלמה, אלא אם כן להקשר זה יש הגדרה ספציפית יותר.
עדיף להימנע ממתן ההקשר כ-`*במקרה שלסגנון יש משמעות כלשהי מחוץ לתחום
מערכת ההשלמה.
ניתן להגדיר סגנונות רבים למטרות כלליות פשוט באמצעות קומפסטיל
פונקציה.
דוגמה ספציפית יותר לשימוש ב- מִלוּלִי הסגנון הוא על ידי ההשלמה עבור ה- להרוג
מובנה. אם הסגנון מוגדר, הקובץ המובנה יציג את כל טקסטי העבודה ושורות הפקודה של התהליך;
אחרת הוא מציג את מספרי המשימה וה-PID החשופים. כדי לכבות את הסגנון לשימוש זה
רק:
zstyle ':השלמה:*:*:הרג:*:*' מִלוּלִי לא
לשליטה רבה עוד יותר, הסגנון יכול להשתמש באחד מהתגים `משרות' או 'תהליכים'. כדי להסתובב
תצוגה לא מפורטת רק עבור משימות:
zstyle ':השלמה:*:*:הרג:*:עבודות' מִלוּלִי לא
השמיים -e אפשרות ל zstyle אפילו מאפשר לקוד של פונקציית ההשלמה להופיע כארגומנט ל
סגנון; זה דורש הבנה מסוימת של הפנימיות של פונקציות השלמה (ראה
לִרְאוֹת zshcompwid(1))). לדוגמה,
zstyle -e ':סִיוּם:*' מארחים 'תגובה=($המארחים שלי)'
זה כופה את הערך של מארחים סגנון שייקרא מהמשתנה המארחים שלי בכל פעם א
נדרש שם מארח; זה שימושי אם הערך של המארחים שלי יכול להשתנות באופן דינמי. עבור
דוגמה שימושית נוספת, ראו את הדוגמה בתיאור של רשימת קבצים סגנון למטה.
צורה זו יכולה להיות איטית ויש להימנע ממנה עבור סגנונות נפוצים הנבדקים כגון תפריט ו
רשימת שורות ראשונות.
שימו לב לסדר שבו הסגנונות מוגדר לא משנה; מנגנון הסגנון משתמש
ההתאמה הספציפית ביותר האפשרית לסגנון מסוים כדי לקבוע את קבוצת הערכים.
ליתר דיוק, מחרוזות עדיפות על פני תבניות (לדוגמה,
`:השלמה::השלמה:::foo' ספציפי יותר מ-`:השלמה::השלמה:::*',) ו
דוגמאות ארוכות יותר עדיפות על פני דוגמאות קצרות יותר.
כלל אצבע טוב הוא שכל תבנית סגנון השלמה שצריכה לכלול יותר מ
תו כללי אחד (*) ושלא מסתיים בשם תג, צריך לכלול את כל ששת הנקודות (:),
אולי סביב תווים כלליים נוספים.
שמות סגנונות כמו אלה של תגיות הם שרירותיים ותלויים בפונקציית ההשלמה.
עם זאת, שני הסעיפים הבאים מפרטים כמה מהתגים והסגנונות הנפוצים ביותר.
תֶקֶן תגים
חלק מהבאים משמשים רק בעת חיפוש סגנונות מסוימים ואינם מתייחסים ל
סוג של התאמה.
חשבונות
נהג לחפש את משתמשים-מארחים סגנון
כל ההרחבות
בשימוש על ידי _לְהַרְחִיב משלים בעת הוספת מחרוזת בודדת המכילה את כל האפשרויות
הרחבות
כל הקבצים
עבור שמות כל הקבצים (בניגוד לקבוצת משנה מסוימת, ראה את
קבצים מגולגלים תָג).
טיעונים
עבור ארגומנטים לפקודה
מערכים עבור שמות של פרמטרים של מערך
מפתחות-אסוציאציה
עבור מפתחות של מערכים אסוציאטיביים; משמש בעת השלמה בתוך כתב תחתי ל-
פרמטר מסוג זה
סימניות
בעת השלמת סימניות (למשל עבור כתובות URL ו- zftp סוויטת פונקציות)
בניינים
עבור שמות של פקודות מובנות
תווים
עבור תווים בודדים בארגומנטים של פקודות כגון sttyמשמש גם כאשר
השלמת שיעורי דמויות לאחר סוגריים פותחים
מפות צבע
עבור מזהי מפת צבעים של X
צבעים עבור שמות צבעים
פקודות
עבור שמות של פקודות חיצוניות. משמש גם על ידי פקודות מורכבות כגון cvs מתי
השלמת פקודות משנה של שמות.
הקשרים
עבור הקשרים בטיעונים ל- zstyle פקודה מובנית
תיקונים
בשימוש על ידי _לְהִתְקַרֵב ו _נָכוֹן משלימים לתיקונים אפשריים
סמנים
עבור שמות סמנים המשמשים תוכניות X
ברירת מחדל
משמש בהקשרים מסוימים כדי לספק דרך לספק ברירת מחדל כאשר ספציפי יותר
תגים תקפים גם כן. שימו לב שתג זה משמש רק כאשר ה- פונקציה שדה של
שם ההקשר מוגדר
תיאורים
משמש בעת חיפוש הערך של פוּרמָט סגנון ליצירת תיאורים עבור
סוגי התאמות
התקנים
עבור שמות של קבצים מיוחדים של התקנים
ספריות
עבור שמות של ספריות -- מדריכים מקומיים משמש במקום זאת בעת השלמת
טיעונים של cd ופקודות מובנות קשורות כאשר ה- cdpath המערך מוגדר
מחסנית ספריות
עבור ערכים במחסנית הספריות
מציג
עבור שמות תצוגה X
תחומים
עבור דומייני רשת
הרחבות
בשימוש על ידי _לְהַרְחִיב משלים עבור מילים בודדות (בניגוד לקבוצה המלאה)
של הרחבות) הנובעות מהרחבת מילה בשורת הפקודה
סיומות
עבור הרחבות שרת X
תיאורי קבצים
עבור מספר תיאורי קבצים פתוחים
קבצים תגית התאמת הקבצים הכללית המשמשת פונקציות המשלימות שמות קבצים
גופנים עבור שמות גופנים X
fstypes
עבור סוגי מערכות קבצים (למשל עבור הר הפקודה)
פונקציות
שמות של פונקציות -- בדרך כלל פונקציות מעטפת, אם כי פקודות מסוימות עשויות
להבין סוגים אחרים של פונקציות
קבצים מגולגלים
עבור שמות קבצים כאשר השם נוצר על ידי התאמת תבניות
קבוצות עבור שמות של קבוצות משתמשים
מילות היסטוריה
למילים מההיסטוריה
מארחים עבור שמות מארחים
אינדקסים
עבור אינדקסים של מערכים
משרות עבור עבודות (כפי שמפורט על ידי ה-`משרותמובנה)
ממשקים
עבור ממשקי רשת
מפות מפתח
עבור שמות של מפות מפתחות zsh
סימני מפתח
עבור שמות של סימני מפתח X
ספריות
עבור שמות ספריות מערכת
גבולות עבור מגבלות מערכת
מדריכים מקומיים
עבור שמות של ספריות שהן תת-ספריות של ספריית העבודה הנוכחית
בעת השלמת טיעונים של cd ופקודות מובנות קשורות (השווה
ספריות-נתיבים) -- כאשר ה- cdpath המערך אינו מוגדר, ספריות משמש במקום זאת
מדריכים
עבור שמות עמודי מדריך
תיבות דואר
עבור תיקיות דואר אלקטרוני
מפות עבור שמות מפות (למשל, מפות NIS)
הודעות
נהג לחפש את פוּרמָט סגנון להודעות
משנים
עבור שמות של שינויי X
מודולים
עבור מודולים (למשל ZSH מודולים)
החשבונות שלי
נהג לחפש את משתמשים-מארחים סגנון
ספריות בעלות שם
עבור ספריות בעלות שם (לא הייתם מנחשים את זה, נכון?)
שמות לכל מיני שמות
קבוצות חדשות
עבור קבוצות USENET
כינויים
לכינויים של מפות NIS
אפשרויות
עבור אפשרויות פקודה
מְקוֹרִי
בשימוש על ידי _לְהִתְקַרֵב, _נָכוֹן ו _לְהַרְחִיב משלימים בעת הצעת ה
מחרוזת מקורית כהתאמה
חשבונות אחרים
נהג לחפש את משתמשים-מארחים סגנון
קבצים אחרים
עבור שמות של קבצים שאינם בספריות. זה משמש במקום כל הקבצים מתי
מה היא רשימת תיקיות ראשונה הסגנון בתוקף.
חבילות
עבור חבילות (למשל סל"ד או מותקן דביאן חבילות)
פרמטרים
עבור שמות של פרמטרים
ספריות-נתיבים
עבור שמות של ספריות שנמצאו על ידי חיפוש ב cdpath מערך בעת השלמתו
טיעונים של cd ופקודות מובנות קשורות (השווה מדריכים מקומיים)
שבילים נהגו לחפש את הערכים של להרחיב, דו - משמעי ו מדריכים מיוחדים סגנונות
תרמילים עבור תרמילי פרל (קבצי תיעוד)
יציאות עבור יציאות תקשורת
קידומות
עבור קידומות (כמו אלו של כתובת URL)
מדפסות
עבור שמות תור ההדפסה
תהליכים
עבור מזהי תהליכים
שמות-תהליכים
נהג לחפש את הפקודה סגנון בעת יצירת שמות של תהליכים עבור
killall
רצפים
עבור רצפים (למשל mh רצפים)
הפעלות
עבור מפגשים ב- zftp סוויטת פונקציות
אותות
עבור שמות אותות
מחרוזות
עבור מיתרים (למשל, מיתרי ההחלפה עבור cd פקודה מובנית)
סגנונות עבור סגנונות המשמשים את הפקודה המובנה zstyle
סיומות
עבור סיומות שמות קבצים
תיוגים עבור תגיות (למשל סל"ד תגיות)
מטרות
עבור יעדי makefile
אזורי זמן
עבור אזורי זמן (למשל בעת הגדרת TZ פָּרָמֶטֶר)
סוגים עבור סוגים מכל סוג שהוא (למשל סוגי כתובות עבור xhost הפקודה)
כתובות אינטרנט נהג לחפש את כתובות אינטרנט ו מקומי סגנונות בעת השלמת כתובות URL
משתמשים עבור שמות משתמש
ערכים עבור אחד מקבוצת ערכים ברשימות מסוימות
גרסה
בשימוש על ידי _בחירת_גרסה לחפש את הפקודה שיש להפעיל בעת קביעת איזו תוכנית
מותקן עבור שם פקודה מסוים.
חזותיים
עבור ויזואליה X
אזהרות
נהג לחפש את פוּרמָט סגנון לאזהרות
יישומונים
עבור שמות ווידג'טים של zsh
חלונות
עבור מזהים של חלונות X
אפשרויות zsh
עבור אפשרויות מעטפת
תֶקֶן סגנונות
שימו לב שהערכים של כמה מהסגנונות הללו מייצגים ערכים בוליאניים. כל אחד מה
מחרוזות `נָכוֹן', `on', `כן', ו'1ניתן להשתמש ב-' עבור הערך `true' וכל אחד מה-
מחרוזות `שקר', `כבוי', `לא', ו'0' עבור הערך `false'. ההתנהגות עבור כל ערך אחר
הערך אינו מוגדר אלא אם כן צוין במפורש. ערך ברירת המחדל יכול להיות אחד מהשניים.
`true' או `false' אם הסגנון לא מוגדר.
חלק מהסגנונות הללו נבדקים תחילה עבור כל תג אפשרי המתאים לסוג של
התאמה, ואם לא נמצא סגנון, עבור ה- ברירת מחדל תגית. הסגנונות הבולטים ביותר של זה
סוג הם תפריט, רשימה-צבעים וסגנונות השולטים ברישום השלמה כגון רשימות מלאות
ו ברגע האחרוןכאשר נבדק עבור ה- ברירת מחדל תגית, רק ה- פונקציה שדה ההקשר
יוגדר כך שסגנון המשתמש בתג ברירת המחדל יוגדר בדרך כלל לאורך השורות
של:
zstyle ':השלמה:*:ברירת מחדל' תפריט ...
קבל בדיוק
זה נבדק עבור תג ברירת המחדל בנוסף לתגים התקפים עבור הנוכחי
הקשר. אם הוא מוגדר כ-`true` וכל אחת מההתאמות של הניסיון זהה ל-
מחרוזת בשורת הפקודה, התאמה זו תתקבל מיד (גם אם היא
אחרת היה נחשב דו משמעי).
בעת השלמת שמות נתיבים (כאשר התג בו נעשה שימוש הוא `שבילים') סגנון זה מקבל כל
מספר תבניות כערך בנוסף לערכים הבוליאניים. שמות נתיבים
התאמה לאחת מהתבניות הללו תתקבל באופן מיידי גם אם הפקודה
השורה מכילה עוד כמה רכיבי שם נתיב שהוקלדו חלקית ואלה תואמים לאף קובץ
תחת הספרייה המקובלת.
סגנון זה משמש גם את ה- _לְהַרְחִיב משלים כדי להחליט אם מילים המתחילות ב
יש להרחיב טילדה או הרחבת פרמטר. לדוגמה, אם ישנם
פרמטרים Foo ו פו בר, המחרוזת `$fooיורחב רק אם קבל בדיוק
מוגדר כ-`true'; אחרת מערכת ההשלמה תורשה להשלים $foo
ל $foobarאם הסגנון מוגדר ל-`להמשיך', _לְהַרְחִיב יוסיף את ההרחבה כ-
המשחק ומערכת ההשלמה גם כן יורשו להימשך.
קבל-דיוריות-מדויקות
זה משמש להשלמת שם קובץ. קבל בדיוק זהו ערך בוליאני.
ברירת מחדל, השלמת שם קובץ בודקת את כל רכיבי הנתיב כדי לראות אם ישנם
השלמות של אותו רכיב, גם אם הרכיב תואם לספרייה קיימת.
לדוגמה, כאשר השלמתו לאחר / usr / bin /, הפונקציה בוחנת את האפשרויות
השלמות ל / usr.
כאשר סגנון זה הוא `true`, כל קידומת של נתיב שתואמת לספרייה קיימת
מתקבל ללא כל ניסיון להשלים אותו עוד יותר. לפיכך, בנתון
לדוגמה, הנתיב / usr / bin / מתקבל באופן מיידי ונעשה ניסיון להשלים זאת
במדריך.
אם ברצונך לעכב התנהגות זו לחלוטין, הגדר את השלמת נתיב סגנון (ראה
למטה) ל-`שקר'.
הוסף רווח
סגנון זה משמש את ה- _לְהַרְחִיב משלים. אם הוא `true' (ברירת המחדל), א
רווח יתווסף לאחר כל המילים הנובעות מההרחבה, או קו נטוי ב
במקרה של שמות ספריות. אם הערך הוא `פילה', המשלים יוסיף רק א
רווח לשמות קבצים קיימים. או ערך בוליאני `true' או הערך `פילה' עשוי
להיות משולב עם `שם עצם', ובמקרה כזה המשלים לא יוסיף רווח למילים
נוצר מהרחבת החלפה של הצורה `$(...)' או '${...}'.
השמיים קידומת הפונקציה completer משתמשת בסגנון זה כערך בוליאני פשוט כדי להחליט אם
יש להוסיף רווח לפני הסיומת.
דו - משמעי
זה חל בעת השלמת רכיבים לא סופיים של נתיבי שמות קבצים, במילים אחרות
אלו עם קו נטוי אחרון. אם הוא מוגדר, הסמן נשאר אחרי הראשון
רכיב דו-משמעי, גם אם השלמת תפריטים נמצאת בשימוש. הסגנון תמיד נבדק
עם שבילים תָג.
רשימת הקצאה
בעת השלמה לאחר סימן שוויון, הפעולה מטופלת כמטלה, ה-
מערכת ההשלמה בדרך כלל משלימה שם קובץ אחד בלבד. במקרים מסוימים הערך
עשויה להיות רשימה של שמות קבצים המופרדים באמצעות נקודתיים, כמו ב נתיב וכדומה
פרמטרים. ניתן להגדיר סגנון זה לרשימת תבניות התואמות את שמותיהם של כאלה
פרמטרים.
ברירת המחדל היא להשלים רשימות כאשר המילה בשורה כבר מכילה
המעי הגס.
תיאור אוטומטי
אם מוגדר, ערך סגנון זה ישמש כתיאור עבור אפשרויות שאינן
מתואר על ידי פונקציות ההשלמה, אך יש להן בדיוק ארגומנט אחד.
רצף `%d' בערך יוחלף בתיאור עבור ארגומנט זה.
בהתאם להעדפות אישיות, ייתכן שיהיה שימושי להגדיר סגנון זה למשהו
כמו `לפרט: %dשים לב שייתכן שזה לא יעבוד עבור פקודות מסוימות.
הימנעות-השלמה
זה משמש את _כל_ההתאמות משלים כדי להחליט אם המחרוזת המורכבת מ
יש להוסיף את כל ההתאמות לרשימה שנוצרת כעת. ערכה הוא
רשימת שמות של משלימים. אם אחד מאלה הוא שם המשלים ש
יצר את ההתאמות בהשלמה זו, המחרוזת לא תתווסף.
ערך ברירת המחדל עבור סגנון זה הוא `_לְהַרְחִיב רשימה_ישנה _נָכוֹן _לְהִתְקַרֵב', כלומר
הוא מכיל את השלמים שעבורם מחרוזת עם כל ההתאמות כמעט לעולם לא תופיע
מבוקש.
נתיב המטמון
סגנון זה מגדיר את הנתיב שאליו נשלחים קבצי מטמון המכילים נתוני השלמה
מאוחסנים. ברירת המחדל היא `$ZDOTDIR/.zcompcache', או '$HOME/.zcompcache' אם
$ZDOTDIR אינו מוגדר. מטמון ההשלמה לא ייעשה בו שימוש אלא אם כן
השתמש במטמון הסגנון נקבע.
מדיניות מטמון
סגנון זה מגדיר את הפונקציה שתשמש לקביעת האם מטמון
זקוק לשיפוץ. ראה סעיף על _cache_invalid פונקציה למטה.
פקודת קריאה
סגנון זה משמש בפונקציה עבור פקודות כגון לעשות ו נמלה לאן מתקשרים
הפקודה ליצירת התאמות ישירות סובלת מבעיות כגון איטיות או, כמו
במקרה של לעשות יכול לגרום לביצוע פעולות ב-makefile.
אם הוא מוגדר כ-`true` הפקודה נקראת כדי ליצור התאמות. ערך ברירת המחדל
בסגנון הזה הוא 'שקרי'.
הפקודה
במקומות רבים, פונקציות השלמה צריכות לקרוא לפקודות חיצוניות כדי לייצר את
רשימת השלמות. ניתן להשתמש בסגנון זה כדי לעקוף את הפקודה שנקראת
במקרים מסוימים כאלה. רכיבי הערך מחוברים באמצעות רווחים ליצירת
שורת פקודה לביצוע. הערך יכול גם להתחיל במקף, ובמקרה כזה ה-
הפקודה הרגילה תתווסף לסוף; זה שימושי ביותר להוספת `בנוי'
או `הפקודה' מלפנים כדי לוודא שהגרסה המתאימה של הפקודה נקראת,
לדוגמה, כדי להימנע מקריאה לפונקציית מעטפת בעלת שם זהה לפונקציית חיצונית
פקודה.
כדוגמה, פונקציית ההשלמה עבור מזהי תהליכים משתמשת בסגנון זה עם ה-
תהליכים תגית ליצירת המזהים להשלמה ורשימת התהליכים להצגה
(אם מִלוּלִי הסגנון הוא `true'). הרשימה שמיוצרת על ידי הפקודה צריכה להיראות
כמו הפלט של ה- ps פקודה. השורה הראשונה אינה מוצגת, אך היא
חיפש את המחרוזת `מח"ש' (או 'PID') כדי למצוא את מיקום מזהי התהליך ב
השורות הבאות. אם השורה אינה מכילה `מח"ש', המספרים הראשונים בכל אחד מהם
של השורות האחרות נלקחים כמזהי התהליך שיש להשלים.
שים לב שפונקציית ההשלמה בדרך כלל צריכה לקרוא לפקודה שצוינה עבור
בכל ניסיון ליצור את רשימת ההשלמות. לכן יש לנקוט משנה זהירות כדי
ציין רק פקודות שלוקח להריץ אותן זמן קצר, ובפרט כדי להימנע מכל
שאולי לעולם לא יסתיים.
נתיב פקודה
זוהי רשימה של ספריות לחיפוש פקודות להשלמה. ברירת המחדל עבור
סגנון זה הוא הערך של הפרמטר המיוחד נתיב.
פקודות
זה משמש את הפונקציה שמשלימה פקודות משנה לאתחול המערכת.
סקריפטים (המתגוררים ב /etc/init.d או במקום לא רחוק מדי משם). זה
ערכים נותנים את פקודות ברירת המחדל שיש להשלים עבור אותן פקודות שעבורן ה-
פונקציית ההשלמה אינה מסוגלת למצוא אותם באופן אוטומטי. ברירת המחדל עבור
סגנון זה הם שני המיתרים `התחלה'ו'להפסיק'.
להשלים
זה משמש את _expand_alias פונקציה כאשר היא מופעלת כפקודה הניתנת לקישור. אם
מוגדר ל-`true' והמילה בשורת הפקודה אינה שם של כינוי,
שמות בדויים תואמים יושלמו.
אפשרויות מלאות
זה משמש את המשלים עבור cd, chdir ו pushdעבור פקודות אלה א - is
משמש להכנסת ערך מחסנית ספריות והשלמתם היא הרבה יותר
נפוץ יותר מהשלמת אפשרויות. לכן, אלא אם כן ערך הסגנון הזה הוא `true'
אפשרויות לא יושלמו, גם לאחר בדיקה ראשונית -אם זה 'אמת', אפשרויות
יושלם לאחר בדיקה ראשונית - אלא אם כן ישנה תקרית קודמת -- על הפקודה
קו.
משלים
המחרוזות הנתונות כערך של סגנון זה מספקות את שמות המשלים
פונקציות לשימוש. פונקציות ההשלמה הזמינות מתוארות בסעיף
`פונקציות בקרה` למטה.
כל מחרוזת יכולה להיות שם של פונקציית השלמה או מחרוזת בצורה
`פונקציה:שםבמקרה הראשון, ה- משלים שדה ההקשר יכיל
שם המשלים ללא הקו התחתון המוביל ועם כל שאר
קו תחתון מוחלף במקפים. במקרה השני, פונקציה הוא שמו של
המשלים לקרוא, אך ההקשר יכיל את הערך המוגדר על ידי המשתמש שם ב
משלים שדה ההקשר. אם ה- שם מתחיל במקף, המחרוזת עבור
ההקשר ייבנה משם פונקציית ההשלמה כמו בראשונה
מקרה עם ה- שם מצורף אליו. לדוגמה:
zstyle ':סִיוּם:*' משלים _לְהַשְׁלִים _complete:-foo
כאן, השלמה תקרא ל- _לְהַשְׁלִים משלים פעמיים, פעם אחת באמצעות `להשלים'ו
פעם אחת באמצעות `foo-complete' בתוך ה משלים שדה ההקשר. בדרך כלל, באמצעות
אותו משלים יותר מפעם אחת הגיוני רק כאשר משתמשים בו עם
`פונקציות:שםטופס ', כי אחרת שם ההקשר יהיה זהה בכל
קריאות למשלים; יוצאים מן הכלל האפשריים לכלל זה הם _התעלם ו
קידומת משלימים.
ערך ברירת המחדל עבור סגנון זה הוא `_לְהַשְׁלִים _התעלם': רק השלמה תהיה
נעשה, תחילה באמצעות ה- דפוסים מתעלמים מהם סגנון ואת $פיגנור מערך ואז
בלי להתעלם מהתאמות.
מצב
סגנון זה משמש את ה- _רשימה פונקציית השלמה כדי להחליט אם הכנסה של
יש לדחות התאמות ללא תנאי. ברירת המחדל היא 'true'.
תוחמים
סגנון זה משמש בעת הוספת מפריד לשימוש עם שינויי היסטוריה או גלוב.
הגדרות בעלות ארגומנטים מופרדים. זהו מערך של מפרידי גבולות מועדפים
להוסיף. עדיף להשתמש בתווים שאינם מיוחדים מכיוון שמערכת ההשלמה עשויה
אחרת תתבלבל. רשימת ברירת המחדל היא :, +, /, -, %הרשימה עשויה להיות
ריק כדי לאלץ הקלדת תו מפריד.
נכה
אם זה מוגדר כ-`true`, ה- _expand_alias הפקודה completer ו-bindable ינסו
כדי להרחיב גם כינויים מושבתים. ברירת המחדל היא `false'.
תחומים
רשימת שמות של דומיינים ברשת להשלמה. אם אפשרות זו אינה מוגדרת, דומיין
השמות יילקחו מהקובץ / Etc / resolv.conf.
על
סגנון הסביבה משמש בעת השלמת `sudo'. זה מוגדר למערך של
`VAR=ערך' משימות לייצוא לסביבה המקומית לפני ה-
השלמה עבור פקודת היעד מופעלת.
zstyle ':השלמה:*:sudo::' על
נתיב="/ sbin:/ usr / sbin:$PATH" בית="/ שורש"
להרחיב סגנון זה משמש בעת השלמת מחרוזות המורכבות מחלקים מרובים, כגון
שמות נתיבים.
אם אחד הערכים שלו הוא המחרוזת `קידומת', המילה שהוקלדה חלקית מהשורה
יורחב ככל האפשר גם אם לא ניתן יהיה להשלים חלקים מאוחרים.
אם אחד הערכים שלו הוא המחרוזת `סִיוֹמֶת', שמות תואמים לרכיבים לאחר
גם המחרוזת הדו-משמעית הראשונה תתווסף. משמעות הדבר היא שהמחרוזת המתקבלת
הוא המחרוזת הארוכה ביותר האפשרית, ללא תלות במשמעות. עם זאת, ניתן להשתמש בהשלמת תפריטים.
כדי לעבור על כל המשחקים.
מְזוּיָף ניתן להגדיר סגנון זה עבור כל הקשר של השלמה. הוא מציין מחרוזות נוספות.
שתמיד יושלם באותו הקשר. צורתה של כל מחרוזת היא
`ערך:תיאור'; ניתן להשמיט את הנקודתיים והתיאור, אך כל מילולי
נקודתיים ב ערך יש לצטט עם קו נטוי הפוך. תיאור המסופק מוצג
לצד הערך ברשימות השלמה.
חשוב להשתמש בהקשר מגביל מספיק בעת ציון זיוף
מחרוזות. שימו לב שהסגנונות קבצים מזויפים ו פרמטרים מזויפים לספק נוסף
תכונות בעת השלמת קבצים או פרמטרים.
מזויף-תמיד
זה עובד באופן זהה ל- מְזוּיָף סגנון חוץ מזה ש- דפוסים מתעלמים מהם סגנון הוא
לא הוחל עליו. זה מאפשר לעקוף לחלוטין קבוצת התאמות
על ידי הגדרת התבניות המתעלמות ל- `*'.
להלן דרך להשלים כל תגית עם נתונים שרירותיים, אך לאחר
למטרות תצוגה, הוא מתנהג כמו תג נפרד. בדוגמה זו אנו משתמשים ב-
תכונות של סדר תגיות סגנון לחלק את ספריות בעלות שם תג לשניים כאשר
ביצוע השלמה עם המשלים הסטנדרטי להשלים עבור טיעונים של cd.
התג ספריות-נשמות-רגילות מתנהג כרגיל, אבל התג
ספריות-שמו-שלי מכיל קבוצה קבועה של ספריות. יש לכך את האפקט של
הוספת קבוצת ההתאמה `נוסף ספריות' עם ההשלמות הנתונים.
zstyle ':completion::complete:cd:*' סדר תגיות
ספריות-בעלות-שם:-שלי:נוסף ספריות
ספריות-שמויות:-רגיל:שמו ספריות *'
zstyle ':completion::complete:cd:*:named-directories-mine'
מזויף-תמיד mydir1 mydir2
zstyle ':completion::complete:cd:*:named-directories-mine'
דפוסים מתעלמים מהם '*'
קבצים מזויפים
סגנון זה משמש בעת השלמת קבצים וחיפוש ללא תגית. ערכיו
הם מהצורה `dir:שמות...זה יוסיף את שמות (מחרוזות מופרדות על ידי
רווחים) כהתאמות אפשריות בעת השלמתם בספרייה dir, גם אם אין כזה
קבצים באמת קיימים. ייתכן שהמדריך הוא תבנית; תווי תבנית או נקודתיים ב dir
יש לצטט עם קו נטוי הפוך כדי שיתייחסו אליו מילולית.
זה יכול להיות שימושי במערכות התומכות במערכות קבצים מיוחדות שמערכות הקבצים ברמה העליונה שלהן
לא ניתן לרשום או ליצור שמות נתיבים באמצעות תבניות glob. ניתן גם להשתמש בהם
עבור ספריות שאין להן הרשאת קריאה.
ניתן להשתמש בטופס התבנית כדי להוסיף ערך "קסום" מסוים לכל הספריות ב-
מערכת קבצים מסוימת.
פרמטרים מזויפים
פונקציית ההשלמה משתמשת בזה עבור שמות פרמטרים. הערכים שלה הם שמות
של פרמטרים שאולי עדיין לא נקבעו אך יש להשלים אותם בכל זאת.
ניתן גם להחיל נקודתיים ואחריהם מחרוזת המציינת את סוג ה-
פרמטר (כמו `סקלר', `מערך' או 'מספר שלםאם ניתן הסוג, השם
יושלם רק אם נדרשים פרמטרים מסוג זה בפרט
הקשר. שמות שלא צוין עבורם סוג תמיד יושלמו.
רשימת קבצים
סגנון זה קובע האם קבצים הושלמו באמצעות המנגנון המובנה הסטנדרטי
יפורסמו עם רשימה ארוכה דומה ל- ls -lשים לב שתכונה זו משתמשת
מודול הקליפה zsh/stat עבור מידע על הקובץ; פעולה זו טוענת את הקובץ המובנה stat אשר
יחליף כל חיצוני stat הפעלת הקוד. כדי להימנע מכך, ניתן להשתמש בקוד הבא
כלול בקובץ אתחול:
zmodload -i zsh/stat
להשבית stat
ניתן להגדיר את הסגנון לערך `true' (או `את כל'), או אחד הערכים
`להכניס' או 'רשימה', המציין כי יש לפרט את הקבצים בפורמט ארוך בכל
נסיבות, או בעת ניסיון להכניס שם קובץ, או בעת רישום שמות קבצים
בלי לנסות להכניס אחד.
באופן כללי יותר, הערך יכול להיות מערך של כל אחד מהערכים לעיל, אופציונלי
אחריו =NUM. אם NUM קיים הוא נותן את מספר ההתאמות המרבי עבור
איזה סגנון רישום ארוך ייעשה בו שימוש. לדוגמה,
zstyle ':סִיוּם:*' רשימת קבצים רשימה=20 הכנס=10
מציין כי פורמט ארוך ישמש בעת רישום של עד 20 קבצים או הוספת
קובץ עם עד 10 התאמות (בהנחה שרשימה בכלל תוצג, לדוגמה)
בהשלמה דו משמעית), אחרת ייעשה שימוש בפורמט קצר.
zstyle -e ':סִיוּם:*' רשימת קבצים
(( ${+נומרי} )) && תשובה=(אמת)'
מציין כי יש להשתמש בפורמט ארוך בכל פעם שמסופק ארגומנט מספרי,
פורמט קצר אחר.
תבניות-קבצים
זה משמש את הפונקציה הסטנדרטית להשלמת שמות קבצים, _קבצים. אם
הסגנון אינו מוגדר, עד שלושה תגים מוצעים, `קבצים מגולגלים',`ספריות'ו
`כל הקבצים', בהתאם לסוגי הקבצים הצפויים על ידי הקורא של _קבצים.
שני הראשונים (`קבצים מגולגלים'ו'ספריות') מוצעים בדרך כלל יחד ל
להקל על השלמת קבצים בתת-ספריות.
השמיים תבניות-קבצים הסגנון מספק חלופות לתגיות ברירת המחדל, שאינן
בשימוש. ערכו מורכב מאלמנטים מהצורה `דפוס:תג'; כל מחרוזת עשויה
להכיל מספר כלשהו של מפרטים כאלה מופרדים ברווחים.
השמיים דפוס הוא תבנית שיש להשתמש בה ליצירת שמות קבצים. כל מופע
של הרצף `%p' מוחלף בכל תבנית/תבניתות המועברות על ידי קריאה לפונקציה
_קבציםנקודתיים בתבנית חייבים להיות מוכנסים לפני קו נטוי הפוך כדי להפוך אותם ל...
ניתן להבחין מהמעי הגס שלפני ה תגאם נדרשת יותר מתבנית אחת,
ניתן לתת את התבניות בתוך סוגריים מרובעים, מופרדות באמצעות פסיקים.
השמיים תגs של כל המחרוזות בערך יוצעו על ידי _קבצים ומשמש כאשר
מחפש סגנונות אחרים. כל אחד תגים באותה מילה יוצעו באותו הזמן
זמן ולפני מילים מאוחרות יותר. אם לא `:תג'ניתן ל-'קבציםייעשה שימוש בתג '.
השמיים תג ניתן גם להציב נקודתיים שנייה, אופציונלית, ותיאור, אשר
ישמש עבור ה-`%d'בערך ה- פוּרמָט סגנון (אם מוגדר) במקום זאת
של התיאור המוגדר כברירת מחדל על ידי פונקציית ההשלמה. אם התיאור
הנתון כאן מכיל בעצמו `%d', אשר מוחלף בתיאור שסופק
על ידי פונקציית ההשלמה.
לדוגמה, כדי להפוך את rm הפקודה תחילה השלימה רק שמות של קבצי אובייקט ו
לאחר מכן שמות כל הקבצים אם אין קובץ אובייקט תואם:
zstyle ':השלמה:*:*:rm:*:*' תבניות-קבצים
'*.o:קבצי-אובייקט' '%p:כל-הקבצים'
כדי לשנות את אופן הפעולה של השלמת קבצים -- להציע קבצים התואמים תבנית
וספריות בניסיון הראשון, לאחר מכן כל הקבצים -- כדי להציע רק תואמים
קבצים בניסיון הראשון, אחר כך ספריות, ולבסוף כל הקבצים:
zstyle ':סִיוּם:*' תבניות-קבצים
'%p:קבצים-מקובצים' '*(-/):ספריות' כל הקבצים
זה עובד גם כאשר אין דפוס מיוחד: _קבצים תואם את כל הקבצים באמצעות
התבנית `*' בצעד הראשון ועוצר כשהוא רואה דפוס זה. שימו לב גם
הוא לעולם לא ינסה תבנית יותר מפעם אחת עבור ניסיון השלמה יחיד.
במהלך ביצוע פונקציות ההשלמה, ה- EXTENDED_GLOB האפשרות נמצאת
אפקט, כך שהדמויות `#', `~'ו'^'יש להם משמעויות מיוחדות בתבניות.
מיון קבצים
פונקציית השלמת שם הקובץ הסטנדרטית משתמשת בסגנון זה ללא תגית כדי
לקבוע באיזה סדר יש לפרט את השמות; השלמת התפריט תתבצע במחזוריות
דרכם באותו סדר. הערכים האפשריים הם: `גודל' כדי למיין לפי
גודל הקובץ; `קישורים' כדי למיין לפי מספר הקישורים לקובץ;
`שינוי' (או 'זמן' או 'נתונים') כדי למיין לפי זמן השינוי האחרון;
`גישה' כדי למיין לפי זמן הגישה האחרון; ו-`inode' (או 'שינוי') כדי למיין לפי
זמן שינוי האינוד האחרון. אם הסגנון מוגדר לערך אחר, או שאינו מוגדר, קבצים
ימוין לפי סדר אלפביתי של שם. אם הערך מכיל את המחרוזת `להפוך',
המיון מתבצע בסדר הפוך. אם הערך מכיל את המחרוזת `לעקוב',
חותמות זמן משויכות למטרות של קישורים סמליים; ברירת המחדל היא להשתמש
חותמות הזמן של הקישורים עצמם.
לסנן זה משמש את תוסף LDAP להשלמת כתובת דוא"ל כדי לציין את
תכונות להתאמה בעת סינון ערכים. לדוגמה, אם הסגנון
מוגדר על `sn', התאמה מתבצעת מול שמות משפחה. נעשה שימוש בסינון LDAP סטנדרטי
כך שעקיפה של התאמת השלמות רגילה. אם סגנון זה אינו מוגדר, ה-LDAP
התוסף מדלג. ייתכן שתצטרך גם להגדיר את הפקודה סגנון כדי לציין כיצד
להתחבר לשרת LDAP שלך.
רשימת כוחות
זה מאלץ להציג רשימה של השלמות בכל נקודה שבה מתבצע הרישום,
אפילו במקרים בהם הרשימה בדרך כלל תהיה מושבתת. לדוגמה, בדרך כלל
הרשימה מוצגת רק אם יש לפחות שתי התאמות שונות. על ידי הגדרה
הסגנון הזה ל-`תמיד', הרשימה תמיד תוצג, גם אם יש רק
התאמה יחידה שתתקבל באופן מיידי. ניתן גם להגדיר את הסגנון ל-
מספר. במקרה זה הרשימה תוצג אם יש לפחות מספר זה
התאמות, גם אם כולן היו מוסיפות את אותה מחרוזת.
סגנון זה נבדק עבור תג ברירת המחדל וכן עבור כל תג תקף עבור ה-
השלמה נוכחית. לפיכך ניתן לכפות את הרישום רק עבור סוגים מסוימים של
להתאים.
פוּרמָט אם זה מוגדר עבור ה- תיאורים תג, הערך שלו משמש כמחרוזת להצגה
התאמות לעיל ברשימות ההשלמה. הרצף `%d' במחרוזת הזו יהיה
יוחלף בתיאור קצר של ההתאמות הללו. מחרוזת זו עשויה גם
מכילים את הרצפים הבאים כדי לציין תכונות פלט כמתואר ב-
סעיף הרחבת רצפי הנחיות ב זשמיסק(1): `%B', `%S', `%U', `%F', `%K'
ומקבילותיהם באותיות קטנות, כמו גם `%{...%}'. `%F', `%K'ו'%{...%}'
קבלו ארגומנטים באותה צורה כמו הרחבה מבוקשת. שימו לב שהרצף `%G'
אינו זמין; ארגומנט ל-`%{יש להשתמש ב' במקום זאת.
הסגנון נבדק עם כל תג תקף להשלמה הנוכחית לפני שהוא
נבדק עבור ה- תיאורים תג. לכן ניתן להגדיר מחרוזות פורמט שונות עבור
סוגים שונים של התאמה.
שימו לב גם שחלק מפונקציות השלמה מגדירות ` נוספות%רצפים. אלה הם
מתואר עבור הפונקציות השלמות יותר שעושות שימוש בהן.
חלק מפונקציות ההשלמה מציגות הודעות שניתן להתאים אישית על ידי הגדרה זו
סגנון עבור ה- הודעות תג. כאן, ה-`%d' מוחלף בהודעה שניתנה על ידי
פונקציית השלמה.
לבסוף, מחרוזת הפורמט נבדקת באמצעות אזהרות תג, לשימוש כאשר אין
התאמות יכולות להיווצר בכלל. במקרה זה, ה-`%d' מוחלף ב-
תיאורים של ההתאמות הצפויות, מופרדים ברווחים. הרצף
`%D' מוחלף באותם תיאורים מופרדים באמצעות שורות חדשות.
ניתן להשתמש במפרטי רוחב שדה בסגנון printf עם `%d' ודומיהם
רצפי בריחה. זה מטופל על ידי zformat פקודה מובנית מ-
זש/זוטיל מודול, ראה zshmodules(1).
גוש זה משמש את _לְהַרְחִיב משלים. אם הוא מוגדר כ-`true' (ברירת המחדל),
ייעשה ניסיון להחיל גלובינג על המילים שנוצרו כתוצאה מהחלפה קודמת (ראה
מה היא תחליף סגנון) או את המחרוזת המקורית מהשורה.
גלוֹבָּלִי אם זה מוגדר כ-`true' (ברירת המחדל), ה- _expand_alias משלים וניתן לקשירה
הפקודה תנסה להרחיב כינויים גלובליים.
שם קבוצה
מערכת ההשלמה יכולה לקבץ סוגים שונים של התאמות, המופיעות ב
רשימות נפרדות. ניתן להשתמש בסגנון זה כדי לתת שמות של קבוצות עבור רשימות מסוימות
תגיות. לדוגמה, בעמדת פקודה, מערכת ההשלמה מייצרת שמות של
פקודות מובנות וחיצוניות, שמות של כינויים, פונקציות ופרמטרים של מעטפת ו
מילים שמורות כהשלמות אפשריות. כדי שיהיו הפקודות החיצוניות והקליפה
פונקציות המפורטות בנפרד:
zstyle פקודה:*:*:-completion-:*:commands
שם קבוצה פקודות
zstyle ':completion:*:*:-command-:*:functions'
שם קבוצה פונקציות
כתוצאה מכך, כל התאמה עם אותו תג תוצג באותה קבוצה.
אם השם שניתן הוא מחרוזת ריקה, שם התגית עבור ההתאמות יהיה
משמש כשם הקבוצה. לכן, כדי שיהיו כל מיני התאמות
מוצג בנפרד, ניתן פשוט להגדיר:
zstyle ':סִיוּם:*' שם קבוצה ''
כל ההתאמות שלא הוגדר עבורן שם קבוצה יוכנסו לקבוצה בשם
-בְּרִירַת מֶחדָל-.
סדר קבוצתי
סגנון זה נוסף על שם קבוצה סגנון כדי לציין את סדר התצוגה
של הקבוצות המוגדרות על ידי סגנון זה (השווה סדר תגיות, אשר קובע איזה
השלמות מופיעות בכלל). הקבוצות ששמן מופיע בסדר הנתון; כל
קבוצות אחרות מוצגות בסדר המוגדר על ידי פונקציית ההשלמה.
לדוגמה, כדי שיהיו שמות של פקודות מובנות, פונקציות מעטפת ופונקציות חיצוניות
פקודות מופיעות בסדר זה בעת השלמתן בעמדת פקודה:
zstyle ':completion:*:*:-command-:*:*' סדר קבוצתי
בניינים פונקציות פקודות
קבוצות רשימת שמות של קבוצות UNIX. אם אפשרות זו אינה מוגדרת, שמות הקבוצות נלקחים מה-
מסד הנתונים של YP או הקובץ `/ וכו '/ קבוצה'.
מוסתר אם מוגדר כ-`true', התאמות עבור ההקשר הנתון לא יופיעו ברשימה,
למרות שכל תיאור של ההתאמות שנקבעו עם פוּרמָט יוצג הסגנון.
אם זה מוגדר ל-`את כל', אפילו התיאור לא יוצג.
שימו לב שהמשחקים עדיין יושלמו; הם פשוט לא מוצגים ברשימה.
כדי למנוע כלל היחשבות של משחקים כהשלמות אפשריות, ה- סדר תגיות
ניתן לשנות את הסגנון כפי שמתואר להלן.
מארחים רשימת שמות של מארחים שיש למלא. אם אפשרות זו אינה מוגדרת, שמות מארחים
נלקחו מהקובץ `/ Etc / hosts'.
מארחים-פורטים
סגנון זה משמש פקודות הדורשות או מקבלות שמות מארחים ופורטים של רשת.
המחרוזות בערך צריכות להיות בצורה `המארח:נמלפורטים תקפים הם
נקבע על ידי נוכחות שמות מארחים; ייתכן שיהיו מספר פורטים עבור אותו מארח
לְהוֹפִיעַ.
שורת התעלמות
זה נבדק עבור כל תג תקף להשלמה הנוכחית. אם הוא מוגדר ל-
`true', אף אחת מהמילים שכבר נמצאות בשורה לא תיחשב כ
השלמות אפשריות. אם הוא מוגדר ל-`נוֹכְחִי', המילה שהסמן נמצא עליה תהיה
לא ייחשב כהשלמה אפשרית. הערך `מוצג כעת'דומה
אך חל רק אם רשימת ההשלמות מוצגת כעת על המסך.
לבסוף, אם הסגנון מוגדר ל-`אַחֵר', כל המילים בשורה מלבד ה-
הנוכחי לא ייכלל מההשלמות האפשריות.
הערכים `נוֹכְחִי'ו'מוצג כעת' קצת כמו ההפך מ-
קבל בדיוק סגנון: רק מחרוזות עם תווים חסרים יושלמו.
שים לב שכמעט בוודאות אינך רוצה להגדיר זאת ל-`true` או `אַחֵר' למשך
הקשר כללי כגון `:סִיוּם:*הסיבה לכך היא שזה יאסור
השלמה של, לדוגמה, אפשרויות מספר פעמים גם אם הפקודה המדוברת
מקבל את האפשרות יותר מפעם אחת.
התעלמות-הורים
הסגנון נבדק ללא תגית על ידי הפונקציה שמשלימה שמות נתיבים על מנת
לקבוע האם להתעלם משמות הספריות שכבר הוזכרו ב
המילה הנוכחית, או שם ספריית העבודה הנוכחית. הערך חייב לכלול
אחת או שתי המחרוזות הבאות:
הורה שם כל ספרייה שהנתיב שלה כבר כלול במילה ב-
שורה מתעלמת. לדוגמה, בעת השלמה לאחר פו/../, הספרייה
Foo לא ייחשב כהשלמה תקפה.
pwd שם ספריית העבודה הנוכחית לא יושלם; לכן, עבור
לדוגמה, השלמה לאחר ../ לא ישתמש בשם הנוכחי
במדריך.
בנוסף, הערך עשוי לכלול אחד או את שניהם מ:
.. התעלם מהספריות שצוינו רק כאשר המילה בשורה מכילה את
תת-מחרוזת `../'.
בספרייה
התעלם מהספריות שצוינו רק כאשר שמות הספריות נכללים
הושלם, לא בעת השלמת שמות של קבצים.
ערכים שלא נכללו פועלים באופן דומה לערכים של ה- דפוסים מתעלמים מהם סִגְנוֹן,
כדי שניתן יהיה להחזירם לשיקול דעת על ידי _התעלם משלים.
מוגזם
אם מוגדר, רשימת ההשלמות תהיה מפורטת יותר במחיר של ירידה סבירה
במהירות ההשלמה. ביצועי ההשלמה ייפגעו אם סגנון זה מוגדר ל-
'נכון'.
דפוסים מתעלמים מהם
רשימת תבניות; כל ניסיון שתושלם בהתאם לאחת התבניות ייחשב
לא נכלל בבחינה. ה _התעלם המשלים יכול להופיע ברשימה של
משלימים כדי לשחזר את ההתאמות שהוזנחו. זוהי גרסה ניתנת להגדרה יותר של
פרמטר הקליפה $פיגנור.
שים לב כי EXTENDED_GLOB האפשרות מוגדרת במהלך ביצוע ההשלמה
פונקציות, כך שהתווים `#', `~'ו'^יש להם משמעויות מיוחדות ב-
דפוסי.
להכניס סגנון זה משמש את ה- _כל_ההתאמות המשלים כדי להחליט האם להכניס את
רשימה של כל ההתאמות ללא תנאי במקום להוסיף את הרשימה כהתאמה נוספת.
מזהי הכנסה
בעת השלמת מזהי תהליכים, לדוגמה כארגומנטים ל- להרוג ו לחכות בניינים
שם הפקודה עשוי להיות מומר למזהה התהליך המתאים. בעיה
נוצר כאשר שם התהליך שהוקלד אינו ייחודי. כברירת מחדל (או אם סגנון זה הוא
מוגדר במפורש ל-`תפריט') השם יומר מיד לקבוצה של
מזהים אפשריים, והשלמת התפריט תתחיל כדי לעבור ביניהם.
אם ערך הסגנון הוא `יחיד', המעטפת תחכה עד שהמשתמש יסיים להקליד
מספיק כדי להפוך את הפקודה לייחודית לפני המרת השם למזהה; ניסיונות ל
ההשלמה לא תצליח עד לנקודה זו. אם הערך הוא אחר
מחרוזת, השלמת התפריט תתחיל כאשר המחרוזת שהוקלדה על ידי המשתמש תהיה ארוכה יותר
מאשר הקידומת הנפוצה למזהים המתאימים.
הכנס-טאב
אם מוגדר כ-`true', מערכת ההשלמה תוסיף תו TAB
(בהנחה שזה שימש להתחלת ההשלמה) במקום לבצע השלמה כאשר
אין תו שאינו ריק משמאל לסמן. אם הוא מוגדר ל
`false', ההשלמה תתבצע גם שם.
הערך עשוי להכיל גם את תת-המחרוזות `תלוי ועומד' או 'ממתין =valבזה
במקרה כזה, התו שהוקלד יוכנס במקום להתחיל את ההשלמה כאשר
יש קלט לא מעובד הממתין. אם val ניתן, השלמה לא תתבצע
אם יש לפחות מספר תווים זה של קלט לא מעובד. זה לעתים קרובות
שימושי בעת הדבקת תווים לתוך מסוף. שימו לב עם זאת, שהוא מסתמך על
מה היא $בהמתנה פרמטר מיוחד מ- zsh/zle מודול מוגדר כראוי, וזהו
לא מובטח בכל הפלטפורמות.
ערך ברירת המחדל של סגנון זה הוא `true` למעט השלמה בתוך מגוון
פקודה מובנית שבה היא `false'.
הכנס - חד משמעי
זה משמש את _התאמה ו _לְהִתְקַרֵב משלימים. משלימים אלה הם לעתים קרובות
משמש עם השלמת תפריט מכיוון שהמילה המוקלדת עשויה להיות דמיונית מעט מאוד ל-
השלמה סופית. עם זאת, אם סגנון זה הוא `true', תוכנית ההשלמה תתחיל בתפריט
השלמה רק אם לא ניתן למצוא מחרוזת התחלתית חד משמעית לפחות באורך של
המחרוזת המקורית שהוקלדה על ידי המשתמש.
במקרה של _לְהִתְקַרֵב משלים, שדה המשלים בהקשר יהיה
כבר נקבעו לאחד מ נָכוֹן-NUM or לְהִתְקַרֵב-NUM, שם NUM האם ה
מספר השגיאות שהתקבלו.
במקרה של _התאמה משלים, ניתן להגדיר את הסגנון גם למחרוזת
`דפוס'. לאחר מכן, התבנית על הקו נותרת ללא שינוי אם היא אינה תואמת
באופן חד משמעי.
קידומת שמור
סגנון זה משמש את ה- _לְהַרְחִיב משלים. אם זה 'אמת', המשלים יעשה זאת
נסו לשמור על קידומת המכילה טילדה או הרחבת פרמטר. לכן, עבור
לדוגמה, המחרוזת `~/f*' יורחב ל-`~/פובמקום '
`/home/user/fooאם הסגנון מוגדר ל-`השתנה' (ברירת המחדל), הקידומת תהיה
יישארו ללא שינוי רק אם היו שינויים אחרים בין המילים המורחבות לבין
המילה המקורית משורת הפקודה. כל ערך אחר מאלץ את הקידומת להיות
הורחב ללא תנאי.
ההתנהגות של _לְהַרְחִיב כאשר סגנון זה הוא 'אמיתי', זה גורם _לְהַרְחִיב לוותר
כאשר הרחבה בודדת עם הקידומת המשוחזרת זהה למקורית; לכן
ניתן לקרוא לכל מי שיסיים את הפרויקט שנותר.
ברגע האחרון
זוהי צורה גמישה יותר של ALWAYS_LAST_PROMPT אפשרות. אם היא 'אמת',
מערכת ההשלמה תנסה להחזיר את הסמן לשורת הפקודה הקודמת
לאחר הצגת רשימת השלמות. הוא נבדק עבור כל התגים התקפים עבור
ההשלמה הנוכחית, לאחר מכן ה ברירת מחדל תגית. הסמן יועבר חזרה אל
שורה קודמת אם סגנון זה הוא `true' עבור כל סוגי ההתאמות. שימו לב שבניגוד ל
ALWAYS_LAST_PROMPT אפשרות זו אינה תלויה בארגומנט המספרי.
קבצי-מארחים-ידועים
סגנון זה צריך להכיל רשימה של קבצים לחיפוש שמות מארחים ו(אם ה-
שימוש ב-IP (סגנון מוגדר) כתובות IP בפורמט תואם ל-ssh מארחים_מוכרים
קבצים. אם לא מוגדר, הקבצים /etc/ssh/ssh_known_hosts ו ~/.ssh/known_hosts
משומשים.
רשימה סגנון זה משמש את ה- _היסטוריה_שלמה_מילה הפקודה bindable. אם היא מוגדרת ל-
`true' אין לו השפעה. אם הוא מוגדר כ-`false' התאמות לא יופיעו ברשימה. זה
עוקף את הגדרת האפשרויות השולטות בהתנהגות הרישום, בפרט
AUTO_LISTההקשר תמיד מתחיל ב-`:השלמה:מילות-היסטוריה'.
רשימה-צבעים
אם zsh/complist המודול נטען, ניתן להשתמש בסגנון זה כדי להגדיר צבע
מפרטים. מנגנון זה מחליף את השימוש ב- ZLS_COLORS ו ZLS_COLOURS
פרמטרים המתוארים בסעיף `מודול zsh/complist' ב zshmodules(1), אבל
התחביר זהה.
אם סגנון זה מוגדר עבור ברירת מחדל תג, המחרוזות בערך נלקחות כ
מפרטים שיש להשתמש בהם בכל מקום. אם הוא מוגדר עבור תגים אחרים, ה-
המפרטים משמשים רק עבור התאמות מהסוג המתואר על ידי התג. עבור
זה כדי לעבוד בצורה הטובה ביותר, ה שם קבוצה יש להגדיר את הסגנון למחרוזת ריקה.
בנוסף להגדרת סגנונות עבור תגיות ספציפיות, ניתן גם להשתמש בקבוצות
שמות שצוינו במפורש על ידי שם קבוצה תג יחד עם ה-`(קְבוּצָה)תחביר
מותר על ידי ה- ZLS_COLORS ו ZLS_COLOURS פרמטרים ופשוט באמצעות ה- ברירת מחדל
תָג.
ניתן להשתמש בכל מפרט צבע שכבר הוגדר עבור גרסת GNU.
של ls פקודה:
zstyle ':השלמה:*:ברירת מחדל' רשימה-צבעים
${(s.:.)LS_COLORS}
צבעי ברירת המחדל זהים לאלו של GNU ls פקודה וניתן להשיג אותה על ידי
הגדרת הסגנון למחרוזת ריקה (למשל '').
רשימת תיקיות ראשונה
זה משמש להשלמת קבצים. אם מוגדר, ספריות להשלמה יפורטו
בנפרד ולפני השלמה עבור קבצים אחרים, ללא קשר לסדר התגים.
בנוסף, התגית קבצים אחרים משמש במקום כל הקבצים עבור הנותרים
קבצים, כדי לציין שלא מוצגות ספריות עם תגית זו.
מקובץ ברשימה
אם סגנון זה הוא `true' (ברירת המחדל), מערכת ההשלמה תנסה לבצע
רשימות השלמות מסוימות קומפקטיות יותר על ידי קיבוץ התאמות. לדוגמה, אפשרויות
עבור פקודות בעלות אותו תיאור (מוצג כאשר ה- מִלוּלִי הסגנון מוגדר ל
`true') יופיע כערך יחיד. עם זאת, ניתן להשתמש בבחירת תפריט כדי
לעבור על כל המשחקים במחזוריות.
רשימות מלאות
זה נבדק עבור כל תג תקף בהקשר הנוכחי וכן עבור ה- ברירת מחדל
תג. אם הוא מוגדר כ-`true', ההתאמות המתאימות יופיעו ברשימות כאילו
מה היא רשימה_ארוזה האפשרות נקבעה. אם היא מוגדרת כ-`false', הם מופיעים ברשימה
בדרך כלל.
הנחיה לרשימה
אם סגנון זה מוגדר עבור ברירת מחדל תגית, רשימות השלמה שאינן מתאימות ל-
ניתן לגלול את המסך (ראה את תיאור ה- zsh/complist מודול ב
zshmodules(1)). הערך, אם אינו המחרוזת הריקה, יוצג לאחר כל
מסך מלא והמעטפת תבקש לחיצה על מקש; אם הסגנון מוגדר ל-
מחרוזת ריקה, ייעשה שימוש בשורת הפקודה המוגדרת כברירת מחדל.
הערך עשוי להכיל את רצפי הבריחה: `%l' או '%L', אשר יוחלף על ידי
מספר השורה האחרונה המוצגת ומספר השורות הכולל;%m' או '%M',
מספר המשחק האחרון המוצג ומספר ההתאמות הכולל; ו-`%p'ו
`%P', `חולצותכאשר בתחילת הרשימה, `תַחתִית'כאשר בסוף ו-
המיקום מוצג כאחוז מהאורך הכולל, אחרת. בכל מקרה,
טופס עם האות הגדולה יוחלף במחרוזת מרופדת ברוחב קבוע
מימין עם רווחים, בעוד שהצורה הקטנה תוחלף במשתנה
מחרוזת רוחב. כמו במחרוזות הפקודה אחרות, רצפי הבריחה `%S', `%s', `%B',
`%b', `%U', `%u' לכניסה ויציאה ממצבי התצוגה בולטים, מודגשים ו
קו תחתון, ו-`%F', `%f', `%K', `%k' לשינוי הרקע בחזית
צבע, זמינים גם כן, כמו גם הצורה `%{...%}' עבור סגירת רצפי בריחה
אשר מוצגים עם רוחב אפס (או, עם ארגומנט מספרי, רוחב אחר).
לאחר מחיקת ההנחיה הזו, המשתנה רשימה יש לבטל את ההגדרה לצורך ההסרה
ייכנסו לתוקף.
רשימת שורות ראשונות
סגנון זה נבדק באותו אופן כמו ה- רשימות מלאות סגנון וקובע
האם יש לפרט את ההתאמות לפי סדר השורות הראשונות כאילו LIST_ROWS_FIRST
האופציה נקבעה.
סיומות רשימה
סגנון זה משמש את הפונקציה שמשלימה שמות קבצים. אם הוא `true', ו-
בוצע ניסיון השלמה על מחרוזת המכילה מספר שמות נתיב שהוקלדו חלקית
רכיבים, כל הרכיבים המעורפלים יוצגו. אחרת, ההשלמה נעצרת ב
הרכיב הראשון הדו-משמעי.
מפריד רשימות
ערך הסגנון הזה משמש ברשימת ההשלמות כדי להפריד את המחרוזת ל
השלם מתיאור במידת האפשר (למשל בעת השלמת אפשרויות). זה
ברירת המחדל היא `--' (שני מקפים).
מקומי זה מיועד לשימוש עם פונקציות שמשלימות כתובות URL שעבורן הקבצים המתאימים
זמינים ישירות ממערכת הקבצים. ערכם צריך להיות מורכב משלושה
מחרוזות: שם מארח, הנתיב לדפי האינטרנט המוגדרים כברירת מחדל עבור השרת, ו-
שם ספרייה בו משתמש ממקם דפי אינטרנט באזור הבית שלו.
לדוגמה:
zstyle ':סִיוּם:*' מקומי הרמת כוסית
/var/http/public/toast public_html
השלמה לאחר `http://toast/stuff/יחפש קבצים בספרייה
/var/http/public/toast/stuff, בעוד שהשלמה לאחר `http://toast/~yousir/'יהיה
חפש קבצים בתיקייה ~yousir/public_html.
ספריית דואר
אם מוגדר, zsh יניח שניתן למצוא קבצי תיבת דואר בספרייה שצוינה.
ברירת המחדל היא `~/דואר'.
התאמה מקורית
זה משמש את _התאמה משלים. אם הוא מוגדר ל רק, _התאמה אנסה ל
צור התאמות מבלי להוסיף `*' במיקום הסמן. אם מוגדר לכל אחד מהם
ערך אחר שאינו ריק, הוא ינסה תחילה ליצור התאמות מבלי להכניס את
`*ואם זה לא יניב התאמות, הוא ינסה שוב עם ה-`*' הוכנס. אם זה
אינו מוגדר או מוגדר למחרוזת ריקה, ההתאמה תתבצע רק עם `*'
מוּכנָס.
שידוך
סגנון זה נבדק בנפרד עבור כל תגית תקפה בהקשר הנוכחי.
הערך נבדק לפני כל התאמה מפרטים שניתנו על ידי רשימת התאמה סגנון. זה
צריך להיות בצורה המתוארת בסעיף 'בקרת התאמת השלמה' ב
zshcompwid(1). לדוגמאות לכך, ראו את תיאור ה- סדר תגיות סגנון.
רשימת התאמה
ניתן להגדיר סגנון זה לרשימת מפרטי התאמה שיש להחיל
בכל מקום. מפרטי ההתאמה מתוארים בסעיף 'התאמת השלמות'.
שליטה ב zshcompwid(1). מערכת ההשלמה תנסה אותם אחד אחרי השני
עבור כל משלים שנבחר. לדוגמה, כדי לנסות את ההשלמה הפשוטה הראשונה, ואם
שלא מייצר התאמות, השלמה שאינה תלוית רישיות:
zstyle ':סִיוּם:*' רשימת התאמה '' 'm:{a-zA-Z}={A-Za-Z}'
כברירת מחדל, כל מפרט מחליף את הקודם; עם זאת, אם
המפרט מופיע בקידומת +, הוא נוסף לרשימה הקיימת. לכן הוא
ניתן ליצור מפרטים כלליים יותר ויותר ללא חזרה:
zstyle ':סִיוּם:*' רשימת התאמה
'' '+m:{az}={AZ}' '+m:{AZ}={az}'
ניתן ליצור מפרטי התאמה תקפים עבור משלימים ספציפיים על ידי
באמצעות השדה השלישי של ההקשר. זה חל רק על משלימים ש
לעקוף את רשימת ההתאמה הגלובלית, אשר נכון לכתיבת שורות אלה כוללת רק קידומת
ו _התעלםלדוגמה, כדי להשתמש במשלימים _לְהַשְׁלִים ו קידומת אבל לאפשר
השלמה ללא תלות באותיות גדולות/קטנות בלבד עם _לְהַשְׁלִים:
zstyle ':סִיוּם:*' משלים _לְהַשְׁלִים קידומת
zstyle ':השלמה:*:השלמה:*:*:*' רשימת התאמה
'' 'm:{a-zA-Z}={A-Za-Z}'
שמות מוגדרים על ידי המשתמש, כפי שמוסבר עבור משלים סגנון, זמינים. זה
מאפשר לנסות את אותו השלמה יותר מפעם אחת עם התאמות שונות
מפרטים בכל פעם. לדוגמה, כדי לנסות השלמה רגילה ללא התאמה
מפרט, לאחר מכן השלמה רגילה עם התאמה שאינה תלוית אותיות גדולות/קטנות, לאחר מכן
תיקון, ולבסוף השלמה חלקית של מילים:
zstyle ':סִיוּם:*' משלים
_לְהַשְׁלִים _נָכוֹן _complete:foo
zstyle ':השלמה:*:השלמה:*:*:*' רשימת התאמה
'' 'm:{a-zA-Z}={A-Za-Z}'
zstyle ':completion:*:foo:*:*:*' רשימת התאמה
מ':{a-zA-Z}={A-Za-Z} r:|[-_./]=* r:|=*'
אם הסגנון אינו מוגדר בכל הקשר, לא יוחל פירוט התאמה. שימו לב גם
שחלק מהמשלימים כמו _נָכוֹן ו _לְהִתְקַרֵב אל תשתמשו בגפרור
מפרטים בכלל, אם כי משלימים אלה ייקראו רק פעם אחת
אם רשימת התאמה מכיל יותר מאלמנט אחד.
כאשר מפרטים מרובים שימושיים, שימו לב ש- שלם ההשלמה הסתיימה
עבור כל אלמנט של רשימת התאמה, מה שיכול לפגוע במהירות בביצועי המעטפת.
ככלל אצבע גס, מיתר אחד עד שלושה יספקו ביצועים מקובלים.
מצד שני, הוספת ערכים מרובים המופרדים ברווחים לאותה מחרוזת
אין השפעה ניכרת על הביצועים.
אם אין התאמה נוכחית או שהיא ריקה, והאפשרות אין_מקרה_גלוב הוא ב
למעשה, ההתאמה עבור קבצים מתבצעת ללא תלות בקטגוריית רישיות בכל מקרה.
עם זאת, כל מכשיר התאמה חייב לציין במפורש התאמה שאינה תלוית רישיות אם זהו
נדרש.
שגיאות מקסימליות
זה משמש את _לְהִתְקַרֵב ו _נָכוֹן פונקציות השלמה כדי לקבוע את
מספר שגיאות מקסימלי המותר. המשלים ינסה ליצור השלמות
על ידי מתן אפשרות לטעות אחת, לאחר מכן שתי טעויות, וכן הלאה, עד להתאמה או
נמצאו התאמות או שמספר השגיאות המרבי שניתן על ידי סגנון זה נקבע
השיג.
אם הערך עבור סגנון זה מכיל את המחרוזת `מספרי', פונקציית ההשלמה
יקבל כל ארגומנט מספרי כמספר השגיאות המרבי המותר.
לדוגמה, עם
zstyle ':השלמה:*:בקירוב:::' שגיאות מקסימליות 2 מספרי
שתי שגיאות מותרות אם לא ניתן ארגומנט מספרי, אך עם ארגומנט מספרי
של שש (כמו ב-`ESC-6 TAB'), מתקבלות עד שש שגיאות. לכן עם ערך של
`0 מספרי', לא יבוצע ניסיון תיקון השלמה אלא אם כן יוכנס ארגומנט מספרי
נתון.
אם הערך מכיל את המחרוזת `לא מספרי', המשלים יעשה זאת לֹא אנסה
יצירת השלמות מתוקנות כאשר ניתנת ארגומנט מספרי, כך שבמקרה זה ה-
המספר הנתון צריך להיות גדול מאפס. לדוגמה, `2 לא מספרי' מציין
שתיקון השלמה עם שתי שגיאות יבוצע בדרך כלל, אך אם
אם ניתן ארגומנט מספרי, לא יבוצע תיקון השלמה.
ערך ברירת המחדל עבור סגנון זה הוא `2 מספרי'.
רוחב-התאמות-מקסימלי
סגנון זה משמש לקביעת הפשרה בין רוחב התצוגה שבשימוש
עבור התאמות והרוחב המשמש לתיאורים שלהן כאשר מִלוּלִי הסגנון נמצא בפנים
אפקט. הערך מציין את מספר עמודות התצוגה שיש לשמור עבור ההתאמות.
ברירת המחדל היא חצי מרוחב המסך.
יש לכך את ההשפעה הרבה ביותר כאשר מספר התאמות כוללות את אותו התיאור ולכן
יקובצו יחד. הגדלת הסגנון תאפשר קיבוץ של יותר התאמות
יחד; הקטנתו תאפשר לראות יותר מהתיאור.
תפריט אם זה `true' בהקשר של אחת מהתגים שהוגדרו עבור הנוכחי
תפריט השלמה ייעשה בו שימוש. הערך עבור תגית ספציפית יילקח
עדיפות על פני זו עבור ה-`ברירת מחדלתגית '.
אם אף אחד מהערכים שנמצאו בדרך זו אינו 'אמת', אך לפחות אחד מהם מוגדר ל-
`המכונית', הקליפה מתנהגת כאילו ה- AUTO_MENU האפשרות מוגדרת.
אם אחד הערכים מוגדר במפורש כ-`false`, השלמת התפריט תהיה
כבוי במפורש, דורס את MENU_COMPLETE אפשרות והגדרות אחרות.
בצורה `כן=NUM', איפה `כן' יכול להיות כל אחד מהערכים ה-`אמתיים' (`כן', `נָכוֹן',
`on'ו'1'), השלמת התפריט תופעל אם יהיו לפחות NUM גפרורים.
בצורה `כן=ארוך', השלמת התפריט תופעל אם הרשימה אינה מתאימה
על המסך. פעולה זו אינה מפעילה השלמת תפריטים אם הווידג'ט בדרך כלל רק
מפרט השלמות, אך ניתן להפעיל השלמת תפריט במקרה זה עם הערך
`כן=רשימה ארוכה' (בדרך כלל, הערך `בחר=רשימה ארוכה' המתואר בהמשך הוא יותר
שימושי מכיוון שהוא מספק שליטה על גלילה.)
באופן דומה, עם כל אחד מהערכים `false' (כמו ב-`לא=10'), השלמת התפריט תתבצע לֹא
לשימוש אם ישנם NUM או יותר התאמות.
הערך של ווידג'ט זה שולט גם בבחירת התפריט, כפי שממומש על ידי
zsh/complist מודול. הערכים הבאים עשויים להופיע לצד או במקומם
של הערכים לעיל.
אם הערך מכיל את המחרוזת `בחר', בחירת התפריט תתחיל
ללא תנאים.
בצורה `בחר=NUM', בחירת התפריט תתחיל רק אם יהיו לפחות
NUM התאמות. אם הערכים עבור יותר מתג אחד מספקים מספר, המספר הקטן ביותר
המספר תפוס.
ניתן לבטל את בחירת התפריט במפורש על ידי הגדרת ערך המכיל את
מחרוזת`ללא בחירה'.
ניתן גם להתחיל בחירת תפריט רק אם רשימת ההתאמות אינה
להתאים למסך באמצעות הערך `בחר=ארוךכדי להתחיל בחירת תפריט אפילו
אם הווידג'ט הנוכחי מבצע רק רישום, השתמש בערך `בחר=רשימה ארוכה'.
כדי להפעיל השלמת תפריט או בחירת תפריט כאשר יש מספר מסוים של
גפרורים or רשימת ההתאמות אינה מתאימה למסך, שניהם של `כן='ו
`בחר=ניתן לתת ' פעמיים, פעם אחת עם מספר ופעם אחת עם `ארוך'או
`רשימה ארוכה'.
לבסוף, ניתן להפעיל שני מצבים מיוחדים של בחירת תפריט. המילה
`אינטראקטיבי' בערך גורם לכניסה מיידית למצב אינטראקטיבי כאשר
בחירת התפריט החלה; עיין בתיאור של zsh/complist מודול ב
zshmodules(1) לתיאור של מצב אינטראקטיבי. כולל המחרוזת `search'
עושה את אותו הדבר עבור מצב חיפוש מצטבר. כדי לבחור חיפוש מצטבר לאחור,
כלול את המחרוזת `חיפוש אחורה'.
muttrc אם מוגדר, יציג את מיקום קובץ התצורה של mutt. ברירת המחדל היא
`~/.muttrc'.
מספרים
זה משמש עם ה- משרות תג. אם הוא `true', המעטפת תשלים את המשימה
מספרים במקום הקידומת הקצרה ביותר והחד-משמעית של טקסט פקודת העבודה. אם ה-
ערך הוא מספר, מספרי משימות ישמשו רק אם מספר זה של מילים מהמשימת
תיאורים נדרשים כדי לפתור אי-בהירויות. לדוגמה, אם הערך הוא
`1', מחרוזות ישמשו רק אם כל העבודות שונות במילה הראשונה שלהן.
שורות פקודה.
רשימה ישנה
זה משמש את רשימה ישנה משלים. אם הוא מוגדר ל-`תמיד', ואז סטנדרטי
ווידג'טים שמבצעים רישום ישמרו את רשימת ההתאמות הנוכחית, אולם הם
נוצרו; ניתן לכבות זאת במפורש באמצעות הערך `לעולם לא', נותן
ההתנהגות ללא ה רשימה ישנה משלים. אם הסגנון אינו מוגדר, או כל סגנון אחר
ערך, ואז רשימת ההשלמות הקיימת מוצגת אם היא עדיין לא קיימת;
אחרת, רשימת ההשלמות הסטנדרטית נוצרת; זוהי התנהגות ברירת המחדל
of רשימה ישנהעם זאת, אם יש רשימה ישנה וסגנון זה מכיל את שם
הפונקציה completer שיצרה את הרשימה, אז הרשימה הישנה תשמש גם
אם הוא נוצר על ידי ווידג'ט שאינו מבצע רישום.
לדוגמה, נניח שאתה מקליד ^Xc להשתמש מילה_נכונה ווידג'ט, אשר מייצר
רשימת תיקונים למילה שמתחת לסמן. בדרך כלל, הקלדה ^D היה
ליצור רשימה סטנדרטית של השלמות עבור המילה בשורת הפקודה, ולהציג
זה. עם רשימה ישנה, במקום זאת, הוא יציג את רשימת התיקונים שכבר
נוצר.
כדוגמה נוספת, קחו בחשבון את _התאמה משלים: עם ה- הכנס - חד משמעי סגנון
אם מוגדר ל-`true', הוא מוסיף רק מחרוזת קידומת נפוצה, אם קיימת כזו. עם זאת,
זה עשוי להסיר חלקים מהתבנית המקורית, כך שניתן יהיה להשלים אותה בהמשך.
לייצר יותר התאמות מאשר בניסיון הראשון. באמצעות ה- רשימה ישנה משלים
והגדרת סגנון זה ל _התאמה, רשימת ההתאמות שנוצרה לראשונה
ניסיון ישמש שוב.
משחקים ישנים
זה משמש את _כל_ההתאמות משלים כדי להחליט אם רשימה ישנה של התאמות
יש להשתמש בו אם קיים כזה. ערך זה נבחר על ידי אחד מהערכים `true' או על ידי
המחרוזת `רקאם הערך הוא `רק', _כל_ההתאמות אשתמש רק ברשימה ישנה
ולא תהיה לה כל השפעה על רשימת ההתאמות שנוצרת כעת.
אם סגנון זה מוגדר, בדרך כלל לא חכם לקרוא ל- _כל_ההתאמות משלים
ללא תנאי. שימוש אפשרי אחד הוא עבור סגנון זה או עבור ה משלים סגנון
להיות מוגדר עם ה- -e אפשרות ל zstyle כדי להפוך את הסגנון למותנה.
תפריט ישן
זה משמש את רשימה ישנה משלים. הוא שולט באופן שבו השלמת התפריט מתנהגת
כאשר השלמה כבר הוכנסה והמשתמש מקליד קוד סטנדרטי
מפתח השלמה כגון TABהתנהגות ברירת המחדל של רשימה ישנה האם התפריט הזה
ההשלמה תמיד ממשיכה עם רשימת ההשלמות הקיימת. אם סגנון זה
מוגדר כ-`false', אולם, השלמה חדשה מתחילה אם הרשימה הישנה הייתה
נוצר על ידי פקודת השלמה שונה; זוהי ההתנהגות ללא ה-
רשימה ישנה משלים.
לדוגמה, נניח שאתה מקליד ^Xc כדי ליצור רשימת תיקונים ותפריט
ההשלמה מתחילה באחת הדרכים הרגילות. בדרך כלל, או כאשר סגנון זה מוגדר ל
`שקר', הקלדה TAB בשלב זה יתחיל לנסות להשלים את הקו כפי שהוא עכשיו
מופיע. עם רשימה ישנה, במקום זאת הוא ממשיך לעבור על הרשימה של
תיקונים.
מְקוֹרִי
זה משמש את _לְהִתְקַרֵב ו _נָכוֹן משלימים כדי להחליט אם המקור
יש להוסיף מחרוזת כהשלמה אפשרית. בדרך כלל, זה נעשה רק אם
ישנם לפחות שני תיקונים אפשריים, אך אם סגנון זה מוגדר כ-'true', הוא
תמיד נוסף. שימו לב שהסגנון ייבדק עם שדה ההשלמה ב
שם ההקשר מוגדר ל נָכוֹן-NUM or לְהִתְקַרֵב-NUM, שם NUM הוא המספר של
שגיאות שהתקבלו.
ערכת חבילות
סגנון זה משמש בעת השלמת ארגומנטים של דביאן `dpkgתוכנית. זה
מכיל עקיפה עבור חבילת ברירת המחדל המוגדרת עבור הקשר נתון. לדוגמה,
zstyle ':completion:*:complete:dpkg:option--status-1:*'
ערכת חבילות הועיל
גורם להשלמת חבילות זמינות, ולא רק חבילות מותקנות, עבור
`dpkg --סטָטוּס'.
נתיב הפונקציה שמשלימה שמות צבעים משתמשת בסגנון זה עם ה- צבעים תָג. ה
הערך צריך להיות שם הנתיב של קובץ המכיל שמות צבעים בפורמט של
X11 rgb.txt קובץ. אם הסגנון לא מוגדר אך קובץ זה נמצא באחד ממגוון
מיקומים סטנדרטיים, הוא ישמש כברירת מחדל.
השלמת נתיב
זה משמש להשלמת שם קובץ. כברירת מחדל, השלמת שם קובץ בודקת את כל
רכיבים של נתיב כדי לראות אם יש השלמות של רכיב זה. עבור
דוגמא, /u/b/z ניתן להשלים עד /usr/bin/zshהגדרה מפורשת של סגנון זה ל-
`false' מעכב התנהגות זו עבור רכיבי נתיב עד ל- / לפני הסמן;
זה מבטל את ההגדרה של קבל-דיוריות-מדויקות.
אפילו כאשר הסגנון מוגדר כ-`false`, עדיין ניתן להשלים מספר נתיבים.
על ידי הגדרת האפשרות COMPLETE_IN_WORD והזזת הסמן חזרה למקום הראשון
רכיב בנתיב שיש להשלים. לדוגמה, /u/b/z ניתן להשלים עד
/usr/bin/zsh אם הסמן נמצא אחרי ה- /u.
מדריך אורן
אם מוגדר, מציין את הספרייה המכילה קבצי תיבת דואר של PINE. אין
ברירת מחדל, מכיוון שחיפוש רקורסיבי בספרייה זו אינו נוח לכל מי ש
לא משתמש ב-PINE.
יציאות רשימה של שמות שירותי אינטרנט (יציאות רשת) להשלמה. אם אפשרות זו אינה מוגדרת,
שמות השירותים נלקחים מהקובץ `/ וכו '/ שירותים'.
קידומת מוסתרת
זה משמש להשלמות מסוימות שיש להן קידומת משותפת, לדוגמה
אפשרויות פקודה המתחילות במקפים. אם הערך `true', הקידומת לא תהיה
מוצג ברשימת ההתאמות.
ערך ברירת המחדל עבור סגנון זה הוא `false`.
קידומת נדרשת
סגנון זה רלוונטי גם להתאמות עם קידומת משותפת. אם הוא מוגדר ל
`true' קידומת נפוצה זו חייבת להיות מודפסת על ידי המשתמש כדי ליצור את ההתאמות.
הסגנון רלוונטי ל- אפשרויות, אותות, משרות, פונקציות, ו פרמטרים
תגי השלמה.
עבור אפשרויות פקודה, משמעות הדבר היא שה-` הראשוני-', `+', או '--יש להקליד'
במפורש לפני ששמות האפשרויות יושלמו.
עבור אותות, סימן התחלתי `-נדרש ' לפני השלמת שמות האותות.
עבור עבודות, סימן ראשוני של `%נדרש לפני השלמת שמות המשימות.
עבור שמות פונקציות ופרמטרים, סימן התחלה של `_' או '.נדרש לפני הפונקציה
או ששמות פרמטרים המתחילים בתווים אלה יושלמו.
ערך ברירת המחדל עבור סגנון זה הוא `false' עבור פונקציה ו פרמטר השלמות,
ו"אמת" אחרת.
קידומת-שמירה
סגנון זה משמש בעת השלמת שמות נתיבים. ערכו צריך להיות תבנית
התאמת קידומת ראשונית של המילה להשלמה שיש להשאיר ללא שינוי
בכל הנסיבות. לדוגמה, בחלק מה-Unices התחלה של `//(כפול
ל-slash) יש משמעות מיוחדת; הגדרת סגנון זה למחרוזת `//ישמור
זה. כדוגמה נוספת, הגדרת סגנון זה ל- `?:/תחת סיגווין יאפשר
השלמה לאחר `א:/...' וכן הלאה.
רכס זה משמש את _הִיסטוֹרִיָה משלים ו- _היסטוריה_שלמה_מילה ניתן לקשירה
פקודה כדי להחליט אילו מילים יש להשלים.
אם מדובר במספר בודד, רק האחרון N מילים מההיסטוריה יושלמו.
אם זהו טווח מהצורה `מקסימום:פרוסה', האחרון פרוסה מילים יושלמו;
אז אם זה לא יניב התאמות, ה- פרוסה מילים לפני אלה ייבחנו ולכן
מופעל. תהליך זה נעצר כאשר נמצאה לפחות התאמה אחת, או מקסימום מילים
נוסו.
ברירת המחדל היא להשלים את כל המילים מההיסטוריה בבת אחת.
קבצים רקורסיביים
אם סגנון זה מוגדר, ערכו הוא מערך של תבניות שיש לבדוק כנגדן
`$PWD/': שימו לב ללוכסן הנגדי, המאפשר לספריות בתבנית להיות
מופרד באופן חד משמעי על ידי הכללת קו אלכסוני משני הצדדים. אם קובץ רגיל
ההשלמה נכשלת ולמילה בשורת הפקודה עדיין אין ספרייה
חלק משמו, הסגנון מאוחזר באמצעות אותו תג כמו עבור ההשלמה
זה עתה ניסו, ואז האלמנטים שנבדקו כנגדם $PWD/ בתורו. אם אחד מהם תואם,
לאחר מכן המעטפת מנסה שוב להשלים על ידי הוספת המילה לפניה בשורת הפקודה
עם כל ספרייה בהרחבה של **/*(/) בתורו. בדרך כלל האלמנטים של
הסגנון יוגדר כך שיגביל את מספר הספריות שמתחת לנוכחית
למספר שניתן לנהל, לדוגמה `*/.git/*'.
לדוגמה,
zstyle ':סִיוּם:*' קבצים רקורסיביים */zsh/*
אם הספרייה הנוכחית היא /home/pws/zsh/Src, לאחר מכן zle_trTAB ניתן להשלים עד
Zle/zle_tricky.c.
רגיל
סגנון זה משמש את ה- _expand_alias פקודה משלימה וניתנת לקישור. אם מוגדר ל-
`true' (ברירת המחדל), כינויים רגילים יורחבו אך רק בפקודה
מיקום. אם הוא מוגדר כ-`false`, כינויים רגילים לעולם לא יורחבו. אם הוא
מוגדר על `תמיד', כינויים רגילים יורחבו גם אם אינם בפקודה
עמדה.
לשטוף מחדש אם זה מוגדר בעת השלמת פקודות חיצוניות, הרשימה הפנימית (hash) של
הפקודות יעודכנו עבור כל חיפוש על ידי הנפקת לשטוף מחדש פקודה. יש
עונש מהירות עבור זה, שסביר להניח שיהיה מורגש רק כאשר ספריות נמצאות ב
לנתיב יש גישה איטית לקבצים.
גישה מרחוק
אם מוגדר כ-`false`, פקודות מסוימות לא יוכלו ליצור גישה לאינטרנט.
חיבורים לאחזור מידע מרחוק. זה כולל את ההשלמה עבור ה-
CVS פקודה.
לא תמיד ניתן לדעת אם החיבורים אכן מגיעים לאתר מרוחק, לכן
חלקם עשויים להימנע שלא לצורך.
הסר את כל הכפילויות
השמיים _היסטוריה_שלמה_מילה הפקודה הניתנת לקישור וה- _הִיסטוֹרִיָה משלים להשתמש בזה כדי
להחליט אם יש להסיר את כל ההתאמות הכפולות, ולא רק רציפות
כפילויות.
בחר-הנחיה
אם זה מוגדר עבור ה- ברירת מחדל תג, ערכו יוצג במהלך התפריט
מבחר (ראה את תפריט סגנון למעלה) כאשר רשימת ההשלמות אינה מתאימה ל
המסך בכללותו. אותן מילוטות כמו עבור ה- הנחיה לרשימה סגנון מובן,
אלא שהמספרים מתייחסים להתאמה או לקו שעליהם נמצא הסימן. ברירת מחדל
הפקודה (prompt) משמשת כאשר הערך הוא מחרוזת ריקה.
בחר-גלול
סגנון זה נבדק עבור ברירת מחדל תג וקובע כיצד רשימת השלמות מוצגת
גלילה במהלך בחירת תפריט (ראה את תפריט סגנון למעלה) כאשר ההשלמה
הרשימה לא מתאימה למסך כולו. אם הערך הוא `0' (אפס), הרשימה
נגלל על ידי חצאי מסך; אם זהו מספר שלם חיובי, הרשימה נגלל
לפי מספר השורות הנתון; אם זהו מספר שלילי, הרשימה גוללת לפי
screenful פחות הערך המוחלט של מספר השורות הנתון. ברירת המחדל היא
גלילה לפי שורות בודדות.
מקטעים נפרדים
סגנון זה משמש עם ה- מדריכים תג בעת השלמת שמות של עמודי מדריך. אם
זה `true', ערכים עבור מדורים שונים מתווספים בנפרד באמצעות שמות תגיות
מהצורה `מדריך ל.X', איפה X הוא מספר הסעיף. כאשר ה- שם קבוצה סגנון
גם בתוקף, דפים מקטעים שונים יופיעו בנפרד.
סגנון משמש באופן דומה גם עם מילים סגנון בעת השלמת מילים עבור
פקודת dict. היא מאפשרת הוספת מילים ממאגרי מידע שונים של מילונים
בנפרד. ברירת המחדל עבור סגנון זה היא `false'.
עמימות-הצגה
אם zsh/complist המודול נטען, ניתן להשתמש בסגנון זה כדי להדגיש את הראשון
תו דו-משמעי ברשימות השלמה. הערך הוא או ציון צבע
כמו אלה הנתמכים על ידי רשימה-צבעים סגנון או, עם ערך של 'אמת', א
ברירת המחדל של קו תחתון נבחרה. ההדגשה מוחלת רק אם
מחרוזות תצוגת ההשלמה תואמות להתאמות בפועל.
משלים את המופע
נבדק בכל פעם שמתבצע ניסיון של השלמה חדשה. אם היא `true', מערכת ההשלמה
מוציא הודעת התקדמות באזור הרשימה המציגה איזה תהליך השלמה מתבצע
ניסה. ההודעה תידרס על ידי כל פלט כאשר יימצאו השלמות
ומוסר לאחר סיום ההשלמה.
התרגל באופן יחיד
זה משמש את _התעלם משלים כאשר יש התאמה אחת בלבד. אם הערך שלו
הוא `לְהַצִיג', ההתאמה היחידה תוצג אך לא תוכנס. אם הערך הוא
`תפריט', ואז ההתאמה היחידה והמחרוזת המקורית מתווספות שתיהן כהתאמות ו
השלמת התפריטים מתחילה, מה שמקל על בחירת כל אחד מהם.
sort ווידג'טים רבים של השלמה קוראים _תֵאוּר בשלב מסוים אשר יקבע האם
התאמות מתווספות ממוינות או לא ממוינות (לעתים קרובות בעקיפין דרך _מבוקש or _מבוקש).
ניתן להגדיר סגנון זה במפורש לאחד מהערכים הרגילים של `true` או `false` כ-
עקיפה. אם זה לא מוגדר עבור ההקשר, ההתנהגות הסטנדרטית של הקריאה
נעשה שימוש בווידג'ט.
הסגנון נבדק תחילה מול ההקשר המלא כולל התג, ואם זה
לא מצליח לייצר ערך כנגד ההקשר ללא התגית.
אם ווידג'ט הקריאה מבקש במפורש התאמות לא ממוינות, זה בדרך כלל
מכובד. עם זאת, התנהגות ברירת המחדל (לא ממוינת) של השלמה עבור הפקודה
ניתן לעקוף את ההיסטוריה על ידי הגדרת הסגנון ל-'true'.
ב _לְהַרְחִיב משלים, אם הוא מוגדר כ-`true', ההרחבות שנוצרו
תמיד יהיה ממוין. אם הוא מוגדר ל-`תפריט', אז ההרחבות ממוינות רק כאשר
הם מוצעים כמחרוזות בודדות אך לא במחרוזת המכילה את כל האפשרויות
הרחבות.
מדריכים מיוחדים
בדרך כלל, קוד ההשלמה לא יפיק את שמות הספריות `.'ו'..' כפי ש
השלמות אפשריות. אם סגנון זה מוגדר כ-`true', הוא יוסיף גם `.'ו
`..' כהשלמות אפשריות; אם הוא מוגדר ל-`..', רק `..' יתווסף.
הדוגמאות הבאות קובעות מדריכים מיוחדים אל `..כאשר הקידומת הנוכחית ריקה,
הוא יחיד `.', או מורכב רק מנתיב המתחיל ב-`../אחרת ה
הערך הוא `שקר`.
zstyle -e ':סִיוּם:*' מדריכים מיוחדים
'[[ $PREFIX = (../)#(|.|..) ]] && תשובה=(..)'
לחיצות-לחיצה
אם מוגדר כ-`true', רצפי קו חתך בנתיבי שמות הקבצים (לדוגמה ב-
`פו//בר') יטופל כקו נטוי יחיד. זוהי ההתנהגות הרגילה של יוניקס
נתיבים. עם זאת, כברירת מחדל, פונקציית השלמת הקבצים מתנהגת כאילו היה
`*' בין הקווים החתוכים.
להפסיק אם מוגדר כ-`true', ה- _היסטוריה_שלמה_מילה הפקודה bindable תעצור פעם אחת כאשר
להגיע לתחילת או סוף ההיסטוריה. קריאה _היסטוריה_שלמה_מילה יצטרך
לאחר מכן גלגלו לקצה הנגדי של ההיסטוריה. אם סגנון זה מוגדר ל
`false' (ברירת המחדל), _היסטוריה_שלמה_מילה יבוצע לולאה מיידית כמו בתפריט
סִיוּם.
תגובות-חשפניות
אם מוגדר כ-`true`, סגנון זה יגרום להסרת טקסט לא חיוני של הערות מ...
התאמות השלמה. נכון לעכשיו הוא משמש רק בעת השלמת כתובות דוא"ל
כאשר הוא מסיר כל שם תצוגה מהכתובות, מצמצם אותן לפשטות
user@host הטופס.
רק גלובים-תת-משנה
זה משמש את _לְהַרְחִיב משלים. אם מוגדר כ-`true', ההרחבה תתבצע
יש להשתמש רק אם זה נבע מגלישת מוח; לפיכך, אם התרחבות נבעו מה-
שימוש תחליף סגנון המתואר להלן, אך אלה לא שונו עוד יותר על ידי
גלובינג, ההרחבות יידחו.
ברירת המחדל עבור סגנון זה היא `false'.
תחליף
סגנון בוליאני זה קובע האם _לְהַרְחִיב המשלים ינסה תחילה להרחיב
כל ההחלפות במחרוזת (כגון `$(...)'ו'${...}').
ברירת המחדל היא `true`.
סִיוֹמֶת זה משמש את _לְהַרְחִיב משלים אם המילה מתחילה בטילדה או מכילה
הרחבת פרמטרים. אם מוגדר כ-`true`, המילה תורחב רק אם היא
אין סיומת, כלומר אם זה משהו כמו `~פו' או '$foo' במקום
`~פו/' או '$פו/בר', אלא אם כן הסיומת עצמה מכילה תווים המתאימים ל
הרחבה. ברירת המחדל עבור סגנון זה היא `true'.
סדר תגיות
זה מספק מנגנון למיון התגים הזמינים במקום מסוים
ייעשה שימוש בהקשר.
הערכים עבור הסגנון הם קבוצות של רשימות תגיות מופרדות ברווחים. התגים ב
כל ערך ייבדק בו זמנית; אם לא נמצא התאמה, הערך הבא הוא
בשימוש. (ראה את תבניות-קבצים סגנון עבור חריג להתנהגות זו.)
לדוגמה:
zstyle ':completion:*:complete:-command-:*:*' סדר תגיות
פקודות פונקציות
מציין שהשלמה בעמדת פקודה מציעה תחילה פקודות חיצוניות ו
פונקציות מעטפת. תגיות שנותרו ייבדקו אם לא יימצאו השלמות.
בנוסף לשמות תגיות, כל מחרוזת בערך יכולה לקבל אחת מהאפשרויות הבאות
צורות:
- אם ערך כלשהו מורכב רק ממקף, אז רק התגים שצוינו ב-
נוצרים ערכים אחרים. בדרך כלל כל התגים שלא נבחרו במפורש נבחרים
ניסיתי לאחרונה אם התגים שצוינו לא מצליחים לייצר התאמות. משמעות הדבר היא
שערך יחיד המורכב רק ממקף יחיד מכבה את ההשלמה.
! תיוגים...
מחרוזת שמתחילה בסימן קריאה מציינת שמות של תגים שהם
לֹא לשימוש. האפקט זהה לזו של כל התגים האפשריים האחרים עבור
ההקשר היה רשום.
תג:תווית ...
כאן, תג הוא אחד התגים הסטנדרטיים ו תווית הוא שם שרירותי.
התאמות נוצרות כרגיל אך השם תווית משמש בהקשרים
במקום תגזה לא שימושי במילים שמתחילות ב- !.
אם תווית מתחיל במקף, ה תג מוגש מראש ל- תווית כדי ליצור
השם המשמש לחיפוש. ניתן להשתמש בו כדי ליצור את מערכת ההשלמה
נסה תגית מסוימת יותר מפעם אחת, תוך מתן הגדרות סגנון שונות עבור
כל ניסיון; ראה דוגמה להלן.
תג:תווית:תיאור
כמו קודם, אבל תיאור יחליף את ה-`%d'בערך ה- פוּרמָט
סגנון במקום תיאור ברירת המחדל שסופק על ידי ההשלמה
פונקציה. רווחים בתיאור חייבים להיות במירכאות עם קו נטוי הפוך. א
`%dמופיע ב תיאור מוחלף בתיאור שניתן על ידי
פונקציית השלמה.
בכל אחת מהצורות לעיל, התג יכול להיות תבנית או מספר דוגמאות בצורה
`{pat1,פט2...}במקרה זה, כל התגים התואמים ייעשה בהם שימוש, למעט כל תג נתון.
במפורש באותה מחרוזת.
שימוש אחד בתכונות אלו הוא לנסות תגית אחת יותר מפעם אחת, תוך הגדרת סגנונות אחרים
באופן שונה בכל ניסיון, אך עדיין להשתמש בכל התגים האחרים מבלי שיהיה צורך
לחזור על כולם. לדוגמה, כדי לבצע השלמה של שמות פונקציות בפקודה
התעלם מכל פונקציות ההשלמה שמתחילות בקו תחתון.
בוצע ניסיון השלמת זמן:
zstyle ':completion:*:*:-command-:*:*' סדר תגיות
פונקציות:-non-comp *' פונקציות
zstyle פונקציות שאינן עיבוד (completion:*:functions-non-complementation)
דפוסים מתעלמים מהם _*
בניסיון הראשון, כל התגים יוצעו, אך ה- פונקציות התג יהיה
הוחלף על ידי פונקציות שאינן חיבור. ה דפוסים מתעלמים מהם הסגנון מוגדר עבור תגית זו ל
לא לכלול פונקציות המתחילות בקו תחתון. אם אין התאמות, הפונקציה השנייה
ערך ה- סדר תגיות נעשה שימוש בסגנון אשר משלים פונקציות באמצעות ברירת המחדל
תג, הפעם כנראה כולל את כל שמות הפונקציות.
ניתן לפצל את ההתאמות עבור תגית אחת לקבוצות שונות. לדוגמה:
zstyle ':סִיוּם:*' סדר תגיות
אפשרויות:-ארוך:ארוך אפשרויות
אפשרויות:-קצר:קצר אפשרויות
אפשרויות:-אות-יחידה:יחיד מכתב אפשרויות
zstyle ':completion:*:options-long'
דפוסים מתעלמים מהם '[-+](|-|[^-]*)'
zstyle ':completion:*:options-short'
דפוסים מתעלמים מהם '--*' '[-+]?'
zstyle ':completion:*:options-single-letter'
דפוסים מתעלמים מהם ???*
עם שמות קבוצות קבוצת סגנון, אפשרויות המתחילות ב-`--', אפשרויות המתחילות ב-
יחיד `-' או '+' אך מכיל מספר תווים ואפשרויות של אות בודדת
יוצגו בקבוצות נפרדות עם תיאורים שונים.
שימוש נוסף בתבניות הוא לנסות מספר מפרטי התאמה בזה אחר זה.
השמיים רשימת התאמה הסגנון מציע משהו דומה, אבל הוא נבדק מוקדם מאוד ב
מערכת השלמה ולכן לא ניתן להגדיר אותה עבור פקודות בודדות וגם לא עבור פקודות ספציפיות יותר
הקשרים. כך ניתן לנסות השלמה רגילה ללא כל הגדרת התאמה
ואם זה לא יוצר התאמות, נסה שוב עם התאמה שאינה תלוית אותיות גדולות/קטנות,
הגבלת האפקט לארגומנטים של הפקודה Foo:
zstyle ':completion:*:*:foo:*:*' סדר תגיות '*' '*:-מִקרֶה'
zstyle ':completion:*-case' שידוך מ:{az}={AZ}
ראשית, כל התגים המוצעים בעת השלמתם לאחר מכן Foo מנסים באמצעות הרגיל
שם תג. אם פעולה זו אינה מייצרת התאמות, הערך השני של סדר תגיות משמש,
אשר מנסה שוב את כל התגים אלא שהפעם לכל אחד יש -מקרה מצורף אליו
שם לחיפוש סגנונות. מכאן הפעם הערך עבור שידוך סגנון מ
השיחה השנייה אל zstyle בדוגמה משמש להשלמה
לא תלוי רישיות.
אפשר להשתמש ב- -e אופציה של zstyle פקודה מובנית לציון
תנאים לשימוש בתגים מסוימים. לדוגמה:
zstyle -e '*:-פְּקוּדָה-:*' סדר תגיות '
if [[ -n $קידומת$סיומת ]]; אז
תשובה=( )
אחר
תשובה=( - )
פי'
ייעשה ניסיון השלמה בעמדת פקודה רק אם המחרוזת שהוקלדה עד כה היא
לא ריק. זה נבדק באמצעות PREFIX פרמטר מיוחד; ראה zshcompwid למידע נוסף
תיאור של פרמטרים שהם מיוחדים בתוך ווידג'טים של השלמה.
תשובה למערך ריק יש את התנהגות ברירת המחדל של ניסיון כל התגים בבת אחת;
הגדרת מערך המכיל מקף בלבד מבטלת את השימוש בכל התגים ו
ומכאן של כל ההשלמות.
אם לא סדר תגיות סגנון הוגדר עבור הקשר, המחרוזות `ארגומנט (|*-)-*
אפשרות (|*-)-* ערכים'ו'אפשרויות' בתוספת כל התגים המוצעים על ידי ההשלמה
הפונקציה תשמש כדי לספק התנהגות ברירת מחדל הגיונית שגורמת לארגומנטים
(בין אם ארגומנטים רגילים של פקודה או ארגומנטים של אפשרויות) שיש להשלים לפני
שמות אפשרויות עבור רוב הפקודות.
כתובות אינטרנט זה משמש יחד עם ה- כתובות אינטרנט תג לפי פונקציות המשלימות כתובות URL.
אם הערך מורכב מיותר ממחרוזת אחת, או אם המחרוזת היחידה אינה שמה
קובץ או ספרייה, המחרוזות משמשות ככתובות URL להשלמה.
אם הערך מכיל רק מחרוזת אחת שהיא שם של קובץ רגיל, כתובות ה-URL
נלקחים מאותו קובץ (כאשר כתובות ה-URL עשויות להיות מופרדות על ידי רווח לבן או
שורות חדשות).
לבסוף, אם המחרוזת היחידה בערך נותנת שם לספרייה, היררכיית הספריות
rooted בספרייה זו נותן את ההשלמות. הספרייה ברמה העליונה צריכה להיות
שיטת גישה לקבצים, כגון `http', `FTP', `סימנייהוכן הלאה. במקרים רבים
הרמה הבאה של ספריות תהיה שם קובץ. היררכיית הספריות יכולה
לרדת עמוק ככל שצריך.
לדוגמה,
zstyle ':סִיוּם:*' כתובות אינטרנט כתובות URL
mkdir -p ~/.urls/ftp/ftp.zsh.org/pub
מאפשר השלמת כל רכיבי כתובת ה-URL ftp://ftp.zsh.org/pub לאחר
פקודות מתאימות כגון `נטסקייפ' או 'לִינקס'. שימו לב, עם זאת, ששיטות גישה
והקבצים ממולאים בנפרד, כך שאם ה- מארחים הסגנון מוגדר, מארחים יכולים להיות
הושלם ללא התייחסות ל- כתובות אינטרנט סגנון.
ראה את התיאור בפונקציה _urls למידע נוסף (לדוגמה, `יותר
$^fpath/_urls(N)').
השתמש במטמון
אם אפשרות זו מוגדרת, שכבת אחסון במטמון של השלמות מופעלת עבור כל השלמה אשר
להשתמש בו (דרך ה _store_cache, _אחזור_מטמון, ו _cache_invalid פונקציות). ה
ניתן לשנות את הספרייה המכילה את קבצי המטמון באמצעות נתיב המטמון סגנון.
השתמש ב-compctl
אם סגנון זה מוגדר למחרוזת לֹא שווה ל שקר, 0, לא, ו כבוי, ההשלמה
המערכת רשאית להשתמש בכל מפרט השלמה שהוגדר עם compctl בנוי
פקודה. אם הסגנון אינו מוגדר, פעולה זו מתבצעת רק אם zsh/compctl מודול הוא
טעון. המחרוזת עשויה להכיל גם את תת-המחרוזת `ראשון' כדי להשתמש בהשלמות
מוגדר עם `compctl -T', ותת-המחרוזת `ברירת מחדלכדי להשתמש בהשלמה
מוגדר עם `compctl -D'.
שימו לב שזה נועד רק להקל על המעבר מ compctl אל החדש
מערכת השלמה ועשויה להיעלם בעתיד.
שימו לב גם שההגדרות מ compctl ייעשה בו שימוש רק אם אין
פונקציית השלמה ספציפית עבור הפקודה המדוברת. לדוגמה, אם יש
תפקוד _פו כדי להשלים ארגומנטים לפקודה Foo, compctl לעולם לא יהיה
הופעל עבור Foo. אולם, ה compctl גרסה תיבדק אם Foo משתמש רק
השלמה ברירת מחדל.
שימוש ב-IP כברירת מחדל, הפונקציה _מארחים שמשלים שמות מארחים מסיר כתובות IP מ
ערכים שנקראו ממסדי נתונים של מארחים כגון קבצי NIS ו-ssh. אם סגנון זה הוא
`true', ניתן להשלים גם את כתובות ה-IP המתאימות. סגנון זה אינו
להשתמש בכל הקשר שבו מארחים הסגנון מוגדר; שימו לב גם שיש להגדיר אותו לפני
נוצר מטמון של שמות מארחים (בדרך כלל בניסיון ההשלמה הראשון).
משתמשים ייתכן שזו מוגדרת לרשימת שמות משתמש שיש להשלים. אם היא לא מוגדרת, הכל
שמות המשתמש יושלמו. שימו לב שאם מוגדר רק רשימת משתמשים זו
יש להשלים; הסיבה לכך היא שבמערכות מסוימות המבצעות שאילתות כל המשתמשים יכולים לבצע
כמות זמן בלתי אפשרית.
משתמשים-מארחים
הערכים של סגנון זה צריכים להיות בצורה `המשתמש@המארח' או 'המשתמש:המארחזה
משמש עבור פקודות הדורשות זוגות של שמות משתמש ושמות מארח. פקודות אלו יעשו
שמות משתמש מלאים מסגנון זה (בלבד), ויגביל את שמות המארח הבאים
השלמה למארחים המשויכים למשתמש זה באחד מערכי הסגנון.
ניתן לקבץ ערכים עבור קבוצות פקודות המאפשרות כניסה מרחוק,
כמו rlogin ו ssh, באמצעות ה- החשבונות שלי תג. באופן דומה, ערכים עבור קבוצות
של פקודות שבדרך כלל מתייחסות לחשבונות של אנשים אחרים, כגון לדבר ו
אצבע, ניתן לקבץ באמצעות ה- חשבונות אחרים תג. פקודות אמביוולנטיות נוספות
רשאי להשתמש ב חשבונות תָג.
משתמשים-מארחים-פורטים
כמו משתמשים-מארחים אבל משמש לפקודות כמו Telnet ומכיל מחרוזות של
טופס `המשתמש@המארח:נמל'.
מִלוּלִי
אם מוגדר, כפי שהוא כברירת מחדל, רשימת ההשלמות תהיה מפורטת יותר.
פקודות רבות מציגות תיאורים עבור אפשרויות אם סגנון זה הוא `true'.
מילה זה משמש את _רשימה משלים, אשר מונע הכנסת השלמות
עד לניסיון השלמה שני כאשר הקו לא השתנה. הדרך הרגילה של
גילוי אם השורה השתנתה הוא להשוות את כל תוכנה בין
שתי הזדמנויות. אם סגנון זה הוא 'אמת', ההשוואה מתבצעת במקום זאת רק
על המילה הנוכחית. לכן, אם השלמה מתבצעת על מילה אחרת עם ה-
אותו תוכן, ההשלמה לא תתעכב.
בקרה לפני ואחרי הטיפול פונקציות
סקריפט האתחול קומפיניט מגדיר מחדש את כל הווידג'טים שמבצעים השלמה ל
קרא לפונקציית הווידג'ט שסופקה _main_completeפונקציה זו פועלת כקריאה לעטיפת טקסט (wrapper)
פונקציות ה"משלימות" (completer) שנקראות שמייצרות התאמות. אם _main_complete נקרא
עם ארגומנטים, אלה נלקחים כשמות של פונקציות משלימות שיש לקרוא להן ב-
הסדר שניתן. אם לא ניתנים ארגומנטים, קבוצת הפונקציות שיש לנסות נלקחת מה-
משלים סגנון. לדוגמה, להשתמש בהשלמה ותיקון רגילים אם זה לא
צור התאמות כלשהן:
zstyle ':סִיוּם:*' משלים _לְהַשְׁלִים _נָכוֹן
אחרי שיחה קומפיניטערך ברירת המחדל עבור סגנון זה הוא `_לְהַשְׁלִים _התעלם', כלומר
בדרך כלל רק השלמה רגילה מתבצעת, תחילה עם השפעת ה- דפוסים מתעלמים מהם
סגנון ואז בלעדיו. ה _main_complete הפונקציה משתמשת במצב ההחזרה של
פונקציות completion כדי להחליט אם יש לקרוא לפונקציות completion אחרות. אם סטטוס ההחזרה
הוא אפס, לא מנסים משלימים אחרים ו- _main_complete מחזירה את הפונקציה.
אם הטיעון הראשון ל _main_complete הוא מקף יחיד, הארגומנטים לא יהיו
נלקחים כשמות של משלימים. במקום זאת, הארגומנט השני נותן שם לשימוש ב
משלים שדה ההקשר והארגומנטים האחרים נותנים שם פקודה וארגומנטים
להתקשר כדי ליצור את ההתאמות.
פונקציות ההשלמה הבאות כלולות בהפצה, למרות שמשתמשים עשויים
לכתוב בעצמם. שימו לב שבקשרים הקו התחתון המוביל מוסר, לדוגמה
השלמה בסיסית מתבצעת בהקשר `:השלמה::הושלם:...'.
_כל_ההתאמות
ניתן להשתמש במשלים זה כדי להוסיף מחרוזת המורכבת מכל שאר ההתאמות.
משפיע על משלימים מאוחרים יותר, הוא חייב להופיע כמשלים הראשון ברשימה.
רשימת כל המשחקים מושפעת מ- הימנעות-השלמה ו משחקים ישנים סגנונות
מתואר לעיל.
יכול להיות שימושי להשתמש ב- _כְּלָלִי הפונקציה המתוארת להלן כדי לקשור _כל_ההתאמות
ללחיצת מקש משלה, לדוגמה:
לִרְאוֹת -C כל המשחקים מילה שלמה _כְּלָלִי
bindkey '^Xa' כל המשחקים
zstyle ':השלמה:כל-ההתאמות:*' משחקים ישנים רק
zstyle ':השלמה:כל-ההתאמות::::' משלים _כל_ההתאמות
שימו לב שזה לא יוצר השלמות בפני עצמה: תחילה השתמשו בכל אחת מהאפשרויות
דרכים סטנדרטיות ליצירת רשימת השלמות, ולאחר מכן להשתמש ^Xa כדי להראות את הכל
התאמות. במקום זאת, ניתן להוסיף משלים סטנדרטי לרשימה ו
בקשה להכניס ישירות את רשימת כל ההתאמות:
zstyle ':השלמה:כל-ההתאמות::::' משלים
_כל_ההתאמות _לְהַשְׁלִים
zstyle ':השלמה:כל-ההתאמות:*' להכניס נָכוֹן
במקרה זה ה משחקים ישנים אסור לקבוע סגנון.
_לְהִתְקַרֵב
זה דומה לבסיסי _לְהַשְׁלִים משלים אך מאפשר להשלמות ל
לעבור תיקונים. ניתן לציין את מספר השגיאות המרבי על ידי
שגיאות מקסימליות סגנון; ראה את התיאור של התאמה משוערת ב zshexpn(1) לאיך
שגיאות נספרות. בדרך כלל, ניסיון השלמה זה ייעשה רק לאחר הפעולה הרגילה
_לְהַשְׁלִים משלים:
zstyle ':סִיוּם:*' משלים _לְהַשְׁלִים _לְהִתְקַרֵב
זה ייתן השלמה מתקנת אם ורק אם השלמה רגילה לא תניב
השלמות אפשריות. כאשר נמצאות השלמות מתוקנות, המשלים
בדרך כלל מתחיל השלמת תפריטים המאפשרת לך לעבור בין המחרוזות הללו.
משלים זה משתמש בתגים תיקונים ו מְקוֹרִי בעת יצירת האפשרי
תיקונים והמחרוזת המקורית. ה פוּרמָט סגנון עבור הראשון עשוי להכיל
הרצפים הנוספים `%e'ו'%o' אשר יוחלף במספר של
שגיאות שהתקבלו כדי ליצור את התיקונים ואת המחרוזת המקורית, בהתאמה.
המשלים מגדיל בהדרגה את מספר השגיאות המותרות עד למגבלה
על ידי שגיאות מקסימליות סגנון, ולכן אם נמצא השלמה עם שגיאה אחת, לא
השלמות עם שתי שגיאות יוצגו, וכן הלאה. זה משנה את ההשלמה
שם בהקשר כדי לציין את מספר השגיאות שמנסות: בניסיון הראשון
שדה ההשלמה מכיל `משוער-1', בניסיון השני'משוער-2',
וכן הלאה.
מתי _לְהִתְקַרֵב נקרא מפונקציה אחרת, מספר השגיאות שיש לקבל
ניתן להעביר עם ה- -a אפשרות. הארגומנט הוא באותו פורמט כמו ה-
שגיאות מקסימליות סגנון, הכל במחרוזת אחת.
שימו לב שהשלמה זו (וה- _נָכוֹן (המשלים שהוזכר להלן) יכול להיות די
יקר להתקשר, במיוחד כאשר מותר מספר רב של שגיאות. חד סטרי
כדי להימנע מכך, יש להקים את משלים סגנון באמצעות ה -e אפשרות לסגנון z כך
שחלק מהמשלימים משמשים רק כאשר מתבצע ניסיון השלמה שני ב
אותה מחרוזת, לדוגמה:
zstyle -e ':סִיוּם:*' משלים '
if [[ ניסיון_אחרון != "$HISTNO$BUFFER$CURSOR" ]]; אז
_last_try="$HISTNO$BUFFER$CURSOR"
תשובה=(_השלמה _התאמה _קידומת)
אחר
תשובה=(_התעלם _נָכוֹן _לְהִתְקַרֵב)
פי'
זה משתמש ב- HISTNO פרמטר ואת בַּלָם ו מורה פרמטרים מיוחדים אשר
זמינים בתוך zle ווידג'טים להשלמה כדי לברר אם שורת הפקודה
לא השתנה מאז הפעם האחרונה שנעשה ניסיון השלמה. רק אז ה-
_התעלם, _נָכוֹן ו _לְהִתְקַרֵב מסיימים שנקראו.
_לְהַשְׁלִים
משלים זה מייצר את כל ההשלמות האפשריות באופן תלוי הקשר,
כלומר, באמצעות ההגדרות שהוגדרו עם compdef הפונקציה שהוסברה לעיל וה-
ההגדרות הנוכחיות של כל הפרמטרים המיוחדים. זה נותן את ההשלמה הרגילה
התנהגות.
כדי להשלים ארגומנטים של פקודות, _לְהַשְׁלִים משתמש בפונקציית השירות _נוֹרמָלִי,
אשר בתורו אחראי על מציאת הפונקציה הספציפית; הוא מתואר
למטה. הקשרים שונים של הצורה -הקשר- מטופלים באופן ספציפי. אלה הם
כל אלה שהוזכרו לעיל כטיעונים אפשריים ל- #compdef תָג.
לפני שמנסים למצוא פונקציה עבור הקשר ספציפי, _לְהַשְׁלִים בודק אם ה-
פרמטר `קומפקט הקשר' מוגדר. הגדרת `קומפקט הקשרמאפשר את ההשלמה הרגילה
שיגור שיבוטל, דבר שימושי במקומות כמו פונקציה המשתמשת
מגוון עבור קלט. אם הוא מוגדר כמערך, האלמנטים נחשבים ל-
התאמות אפשריות אשר יושלמו באמצעות התג `ערכים' והתיאור
`ערךאם הוא מוגדר למערך אסוציאטיבי, המפתחות משמשים כאפשריים
השלמות והערכים (אם אינם ריקים) משמשים כתיאורים להתאמות.
אם `קומפקט הקשר' מוגדר למחרוזת המכילה נקודתיים, היא צריכה להיות בצורה
`תג:מתאר:פעולהבמקרה זה, ה- תג ו מתאר תן את התגית והתיאור ל
השימוש וה- פעולה מציין מה יש למלא באחד מהטפסים המקובלים
על ידי _טיעונים פונקציית התועלת המתוארת להלן.
לבסוף, אם `קומפקט הקשר' מוגדר למחרוזת ללא נקודתיים, הערך נלקח כ
שם ההקשר לשימוש והפונקציה המוגדרת עבור הקשר זה יהיו
נקרא. למטרה זו, ישנו הקשר מיוחד בשם שורת הפקודה זֶה
משלים שורות פקודה שלמות (פקודות והארגומנטים שלהן). זה לא בשימוש על ידי
מערכת ההשלמה עצמה אך בכל זאת מטופלת כאשר היא נקראת במפורש.
_נָכוֹן
צור תיקונים, אך לא השלמות, עבור המילה הנוכחית; זה דומה ל
_לְהִתְקַרֵב אך לא יאפשר מספר תווים נוסף כלשהו ליד הסמן כ
שהמשלים הזה עושה. האפקט דומה לבדיקת איות. זה מבוסס על
_לְהִתְקַרֵב, אבל שדה ההשלמה בשם ההקשר הוא לתקן.
לדוגמה, עם:
zstyle ':סִיוּם:::::' משלים
_לְהַשְׁלִים _נָכוֹן _לְהִתְקַרֵב
zstyle ':השלמה:*:נכון:::' שגיאות מקסימליות 2 לא מספרי
zstyle ':השלמה:*:בקירוב:::' שגיאות מקסימליות 3 מספרי
תיקון יקבל עד שתי שגיאות. אם ניתן ארגומנט מספרי,
תיקון לא יבוצע, אך השלמת תיקון תתבצע, ותבצע
קבלו כמה שיותר שגיאות כפי שניתן על ידי הארגומנט המספרי. ללא מספר מספרי
טיעון, תחילה ייעשה ניסיון לתקן ולאחר מכן לתקן את השלמתו, עם ה-
הראשון מקבל שתי שגיאות והשני מקבל שלוש שגיאות.
מתי _נָכוֹן נקרא כפונקציה, ניתן לתת את מספר השגיאות שיש לקבל
לאחר -a אפשרות. הארגומנט הוא באותה צורה של ערכים ל- לקבל
סגנון, הכל במחרוזת אחת.
פונקציית השלמה זו מיועדת לשימוש ללא _לְהִתְקַרֵב משלים
או, כמו בדוגמה, ממש לפניו. שימוש בו אחרי ה _לְהִתְקַרֵב משלים
חסר תועלת מאז _לְהִתְקַרֵב לפחות ייצור את המחרוזות המתוקנות
שנוצר על ידי _נָכוֹן משלים - וכנראה יותר.
_לְהַרְחִיב
פונקציית completer זו לא באמת מבצעת השלמה, אלא בודקת אם
המילה בשורת הפקודה כשירה להרחבה, ואם כן, נותנת
שליטה מפורטת על אופן ביצוע הרחבה זו. כדי שזה יקרה, ה-
יש להפעיל את מערכת ההשלמה עם מילה שלמה, לא להרחיב-או-להשלים
(קישור ברירת המחדל עבור TAB), שכן אחרת המחרוזת תורחב על ידי ה-
המנגנון הפנימי של הקליפה לפני שמערכת ההשלמה מתחילה לפעול. שימו לב גם לזה
יש לקרוא למשלים לפני _לְהַשְׁלִים פונקציית משלים.
התגים המשמשים בעת יצירת הרחבות הם כל ההרחבות עבור המחרוזת
המכיל את כל ההרחבות האפשריות, הרחבות בעת הוספת ההרחבות האפשריות
כמשחקים בודדים ו מְקוֹרִי בעת הוספת המחרוזת המקורית מהשורה. ה-
הסדר שבו נוצרות מחרוזות אלו, אם בכלל, יכול להיות נשלט על ידי
סדר קבוצתי ו סדר תגיות סגנונות, כרגיל.
מחרוזת הפורמט עבור כל ההרחבות ועבור הרחבות עשוי להכיל את הרצף
`%o' אשר יוחלף במחרוזת המקורית מהשורה.
סוג ההרחבה שיש לנסות נשלט על ידי תחליף, גוש ו
רק גלובים-תת-משנה סגנונות.
אפשר גם להתקשר _לְהַרְחִיב כפונקציה, ובמקרה כזה השונה
ניתן לבחור מצבים עם אפשרויות: -s ל תחליף, -g ל גוש ו -o ל
רק גלובים-תת-משנה.
_expand_alias
אם המילה שעליה הסמן נמצא היא כינוי, היא מורחבת ולא יהיו השלמות אחרות
נקראים. ניתן לשלוט בסוגי הכינויים שיש להרחיב באמצעות
הסגנונות רגיל, גלוֹבָּלִי ו נכה.
פונקציה זו היא גם פקודה הניתנת לקישור, ראה סעיף 'פקודות הניתנות לקישור'
לְהַלָן.
_הרחבות
אם הסמן עוקב אחר המחרוזת `*.', סיומות שמות הקבצים הושלמו. ה-
סיומות נלקחות מקבצים בספרייה הנוכחית או בספרייה שצוינה ב
תחילת המילה הנוכחית. עבור התאמות מדויקות, ההשלמה ממשיכה לאפשר
משלימים אחרים כגון _לְהַרְחִיב כדי להרחיב את התבנית. הסטנדרט הוסף רווח ו
קידומת מוסתרת סגנונות נצפים.
_הִיסטוֹרִיָה
מילים שלמות מהיסטוריית הפקודות של הקליפה. ניתן לשלוט בהשלמה זו
על ידי הסר את כל הכפילויות, ו sort סגנונות לגבי ה- _היסטוריה_שלמה_מילה ניתן לקשירה
פקודה, עיין בסעיף 'פקודות ניתנות לקישור' להלן ובסעיף 'השלמה'.
תצורת מערכת' לעיל.
_התעלם
השמיים דפוסים מתעלמים מהם ניתן להגדיר סגנון לרשימת תבניות המושוות
כנגד השלמות אפשריות; תואמות מוסרות. עם השלמה זו, אלו
ניתן להחזיר את המשחקים, כאילו לא דפוסים מתעלמים מהם הסגנון נקבע. המשלים
למעשה מייצר רשימה משלו של התאמות; אילו משלימים מופעלים הוא
נקבע באותו אופן כמו עבור ה- קידומת משלים. ה התרגל באופן יחיד סגנון
זמין גם כפי שתואר לעיל.
_רשימה משלים זה מאפשר לעכב את הוספת ההתאמות עד להשלמה
ניסיתי בפעם השנייה מבלי שהמילה בקו תשתנה. בפעם הראשונה
בניסיון, רק רשימת ההתאמות תוצג. זה מושפע מהסגנונות
מצב ו מילה, עיין בסעיף 'השלמת תצורת מערכת' לעיל.
_התאמה משלים זה מיועד לשימוש לאחר _לְהַשְׁלִים משלים. זה מתנהג
באופן דומה, אך המחרוזת בשורת הפקודה עשויה להיות תבנית להתאמה
השלמות ניסויים. זה נותן את האפקט של ה- GLOB_COMPLETE אוֹפְּצִיָה.
בדרך כלל ההשלמה תתבצע על ידי לקיחת התבנית מהקו,
הוספת `*' במיקום הסמן והשוואת התבנית המתקבלת עם
השלמות אפשריות שנוצרו. ניתן לשנות זאת באמצעות התאמה מקורית סגנון
מתואר לעיל.
ההתאמות שנוצרו יוצעו בהשלמת תפריט אלא אם כן
הכנס - חד משמעי הסגנון מוגדר כ-`true`; ראה תיאור לעיל עבור אפשרויות נוספות
אפשרויות לסגנון הזה.
שים לב שמפרטי ההתאמה מוגדרים באופן גלובלי או משמשים את ההשלמה
פונקציות (הסגנונות רשימת התאמה ו שידוך) לא ייעשה בו שימוש.
_תַפרִיט השלמה זו נכתבה כפונקציית דוגמה פשוטה כדי להראות כיצד השלמת תפריטים
ניתן להפעילו בקוד מעטפת. עם זאת, יש לכך השפעה בולטת של השבתת תפריטים
בחירה שיכולה להיות שימושית עם _כְּלָלִי ווידג'טים מבוססי. יש להשתמש בו כ-
המשלים הראשון ברשימה. שימו לב שזה לא תלוי בהגדרה של ה-
MENU_COMPLETE אפשרות ואינה פועלת עם ווידג'טים אחרים להשלמת תפריטים כגון
as הפוך-תפריט-שלם, או קבל-והשלם-התפריט.
רשימה ישנה
משלים זה שולט באופן שבו ווידג'טים סטנדרטיים של השלמה מתנהגים כאשר יש
רשימה קיימת של השלמות אשר ייתכן שנוצרו על ידי השלמה מיוחדת
(כלומר, פקודת השלמה שקשור בנפרד). זה מאפשר את ההשלמה הרגילה
מפתחות כדי להמשיך להשתמש ברשימת ההשלמות שנוצרה כך, במקום
יצירת רשימה חדשה של השלמות הקשריות רגילות. היא אמורה להופיע ב
רשימת השלימים לפני כל אחד מהווידג'טים שמייצרים התאמות. הוא משתמש בשניים
סגנונות: רשימה ישנה ו תפריט ישן, עיין בסעיף 'השלמת תצורת מערכת'
מֵעַל.
קידומת
ניתן להשתמש במשלים זה כדי לנסות השלמה עם הסיומת (כל מה שאחרי ה-
סמן) לא ייחשב. במילים אחרות, הסיומת לא תיחשב כחלק מ
המילה להשלים. האפקט דומה ל- הרחבה-או-השלמה-קידומת
פקודה.
השמיים משלים סגנון משמש כדי להחליט לאילו משלימים אחרים יש לקרוא
יצירת התאמות. אם סגנון זה אינו מוגדר, רשימת המשלימים שהוגדרה עבור
נעשה שימוש בהקשר הנוכחי -- למעט, כמובן, ה- קידומת המשלים עצמו.
יתר על כן, אם משלים זה מופיע יותר מפעם אחת ברשימת המשלימים
רק אלו שמשלימים את הקוד שלא נוסו כבר בקריאה האחרונה של קידומת יהיה
שקוראים לו.
לדוגמה, קחו בחשבון את זה בעולם משלים סִגְנוֹן:
zstyle ':סִיוּם:*' משלים
_לְהַשְׁלִים קידומת _נָכוֹן קידומת: foo
הנה ה קידומת משלים מנסה השלמה רגילה אך מתעלם מהסיומת אם.
שלא מייצר התאמות, וגם לא הקריאה ל- _נָכוֹן
משלים אחרי זה, קידומת ייקרא לי בפעם השנייה, ועכשיו רק מנסה
תיקון עם הסיומת שהתעלמה ממנה. בקריאה השנייה החלק המשלים של
ההקשר מופיע כ-`Foo'.
להשתמש קידומת כמוצא אחרון ולנסות רק השלמה רגילה כאשר היא
הופעל:
zstyle ':סִיוּם:*' משלים _לְהַשְׁלִים ... קידומת
zstyle ':completion::prefix:*' משלים _לְהַשְׁלִים
השמיים הוסף רווח גם סגנון מכובד. אם הוא מוגדר כ-`true' אז קידומת יצטרך
הוסף רווח בין ההתאמות שנוצרו (אם ישנן) לבין הסיומת.
שים לב שהשלמה זו שימושית רק אם COMPLETE_IN_WORD האפשרות מוגדרת;
אחרת, הסמן יועבר לסוף המילה הנוכחית לפני ה
קוד ההשלמה נקרא ולכן לא תהיה סיומת.
_user_expand
משלים זה מתנהג באופן דומה ל- _לְהַרְחִיב משלים אלא מבצע במקום זאת
הרחבות שהוגדרו על ידי משתמשים. הסגנונות הוסף רווח ו sort סגנונות ספציפיים ל-
_לְהַרְחִיב משלימים שמישים עם _user_expand בנוסף לסגנונות אחרים שטופלו בהם
באופן כללי יותר על ידי מערכת ההשלמה. התג כל ההרחבות זמין גם כן.
ההרחבה תלויה בסגנון המערך הרחבת משתמש מוגדר עבור הנוכחי
הקשר; זכרו שההקשר עבור משלימים פחות ספציפי מזה של
השלמה הקשרית מכיוון שההקשר המלא טרם נקבע. אלמנטים של
המערך יכול להיות בעל אחת מהצורות הבאות:
$שירים
שירים הוא שם של מערך אסוציאטיבי. שימו לב שזה אינו פרמטר מלא
ביטוי, בסך הכל $, מצוטט כראוי כדי למנוע התרחבות מיידית,
ואחריו שם של מערך אסוציאטיבי. אם מילת ההרחבה של הניסיון
תואם מפתח ב שירים, ההתרחבות המתקבלת היא הערך המתאים.
_func
_func הוא שם של פונקציית מעטפת ששמה חייב להתחיל ב- _ אבל זה
לא מיוחד בדרך אחרת למערכת ההשלמה. הפונקציה נקראת עם
מילת הניסיון כארגומנט. אם יש להרחיב את המילה, הפונקציה
צריך להגדיר את המערך תשובה לרשימת הרחבות. לחלופין, ניתן להגדיר
תשובה למילה שתשמש כתיאור לקבוצת ה-
הרחבות. סטטוס ההחזרה של הפונקציה אינו רלוונטי.
ניתן לקשירה פקודות
בנוסף להשלמות תלויות ההקשר שסופקו, אשר צפויות לעבוד ב
באופן אינטואיטיבי ברור, ישנם כמה ווידג'טים המיישמים התנהגות מיוחדת אשר
ניתן לקשור בנפרד למפתחות. להלן רשימה של אלה וברירת המחדל שלהם
כריכות.
השלמות_bash
פונקציה זו משמשת שני ווידג'טים, _bash_complete-word ו _bash_list-choices.
זה קיים כדי לספק תאימות עם קישורי השלמה ב-bash. האחרון
אופי הכריכה קובע מה יושלם: `!', שמות פקודות; `$',
משתני סביבה;@', שמות מארחים; `/', שמות קבצים; `~שמות משתמשים. ב-bash,
הכריכה שקודמה על ידי `\e' נותן השלמה, ומקודם על ידי `^X' מפרט אפשרויות.
מכיוון שחלק מהכריכות הללו מתנגשות עם כריכות zsh סטנדרטיות, רק `\e~'ו'^X~'
מחויבים כברירת מחדל. כדי להוסיף את השאר, יש להוסיף את הדברים הבאים ל .zshrc
לאחר קומפיניט הופעל:
ל מפתח in '!' '$' '@' '/' '~'; do
bindkey "\e$key" _bash_complete-word
bindkey "^X$key" _bash_list-choices
עשה
זה כולל את הכריכות עבור `~למקרה שהם כבר היו קשורים למשהו
אחרת; קוד ההשלמה אינו עוקף את קישורי המשתמש.
שם_קובץ_נכון (^XC)
תקן את נתיב שם הקובץ במיקום הסמן. מאפשר עד שש שגיאות ב
שם. ניתן גם לקרוא לו עם ארגומנט כדי לתקן נתיב שם קובץ,
באופן עצמאי מ-zle; התיקון מודפס על פלט סטנדרטי.
מילה_נכונה (^Xc)
מבצע תיקון של הארגומנט הנוכחי באמצעות השלמות ההקשר הרגילות
כאפשרויות אפשריות. פעולה זו מאחסנת את המחרוזת `מילה נכונה' בתוך ה פונקציה שדה של
שם ההקשר ולאחר מכן קורא ל- _נָכוֹן משלים.
_expand_alias (^Xa)
ניתן להשתמש בפונקציה זו כפקודה משלימה וכפקודה הניתנת לקישור. היא מרחיבה את
המילה שהסמן נמצא עליה אם זהו כינוי. סוגי הכינויים המורחבים יכולים להיות
נשלט על ידי הסגנונות רגיל, גלוֹבָּלִי ו נכה.
כאשר משתמשים בו כפקודה הניתנת לקישור, ישנה תכונה נוספת אחת שניתן להשתמש בה.
נבחר על ידי הגדרת להשלים סגנון ל-'true'. במקרה זה, אם המילה אינה
שם של שם בדוי, _expand_alias מנסה להשלים את המילה לשם בדוי מלא
מבלי להרחיב אותו. זה משאיר את הסמן מיד לאחר המילה המלאה כך
הקריאה הזו _expand_alias עוד פעם אחת ירחיב את שם הכינוי המלא כעת.
_הרחבת_מילה (^Xe)
מבצע הרחבה על המילה הנוכחית: שווה ערך לתקן הרחבת-מילה
פקודה, אך באמצעות ה- _לְהַרְחִיב משלים. לפני שקוראים לו, ה- פונקציה שדה של
ההקשר מוגדר ל-`הרחבת-מילה'.
_כְּלָלִי
פונקציה זו אינה מוגדרת כווידג'ט ואינה מחויבת כברירת מחדל. עם זאת, היא יכולה
ישמש להגדרת ווידג'ט ולאחר מכן יאחסן את שם הווידג'ט ב-
פונקציה שדה של ההקשר וקריאה למערכת ההשלמה. זה מאפשר התאמה אישית
ווידג'טים להשלמה עם סט הגדרות סגנון משלהם שניתן להגדיר בקלות. עבור
לדוגמה, כדי להגדיר ווידג'ט שמבצע השלמה רגילה ומפעיל תפריט
בְּחִירָה:
לִרְאוֹת -C Foo מילה שלמה _כְּלָלִי
bindkey '...' Foo
zstyle השלמה:foo:* תפריט כן בחר=1
שימו לב במיוחד כי ה- משלים ניתן להגדיר סגנון בהתאם להקשר על מנת
לשנות את קבוצת הפונקציות המשמשות ליצירת התאמות אפשריות. אם _כְּלָלִי is
נקרא עם ארגומנטים, אלה מועברים אל _main_complete כמו הרשימה של
משלימים במקום אלה שהוגדרו על ידי משלים סגנון.
_היסטוריה_שלמה_מילה (\e/)
מילים שלמות מהיסטוריית הפקודות של המעטפת. זה משתמש ב- רשימה,
הסר את כל הכפילויות, sort, ו להפסיק סגנונות.
הקובץ_האחרון_הכי_חדש (^Xm)
השלם את שם הקובץ ששונה לאחרונה, התואם את התבנית שב
שורת פקודה (שעשויה להיות ריקה). אם ניתן ארגומנט מספרי N, תשלים את Nth
הקובץ שהשתנה לאחרונה. שימו לב שההשלמה, אם קיימת, תמיד ייחודית.
תגיות _הבאות (^Xn)
פקודה זו משנה את קבוצת ההתאמות המשמשת לזו של התג הבא, או קבוצת ההתאמות.
תגיות, כפי שניתנו על ידי סדר תגיות סגנון או כפי שמוגדר כברירת מחדל; אלה תואמים
אחרת לא היה זמין. קריאות עוקבות של מחזור הפקודות
דרך כל קבוצות התגים האפשריות.
קריאה_מתוך (^X^R)
בקש מהמשתמש מחרוזת, והשתמש בה כדי לבצע השלמה על הקובץ הנוכחי
מילה. ישנן שתי אפשרויות למחרוזת. ראשית, היא יכולה להיות קבוצת מילים
התחלה `_', לדוגמה `_קבצים -/', ובמקרה כזה הפונקציה עם כלשהו
ארגומנטים ייקראו כדי ליצור את ההשלמות. חלקים חד משמעיים של
שם הפונקציה יושלם באופן אוטומטי (השלמה רגילה אינה זמינה
בנקודה זו) עד להקלדת רווח.
שנית, כל מחרוזת אחרת תועבר כקבוצת ארגומנטים אל קומפד וצריך
לכן להיות ביטוי המציין מה יש להשלים.
קבוצה מוגבלת מאוד של פקודות עריכה זמינה בעת קריאת המחרוזת:
`ד.א.'ו'^H' מחק את התו האחרון; `^U' מוחק את השורה, ו-`^C'ו'^G'
בטל את הפונקציה, בעוד `להשרות' מקבל את ההשלמה. שימו לב שהמחרוזת נמצאת בשימוש
מילה במילה כשורת פקודה, כך שיש לצטט ארגומנטים בהתאם לתקן
חוקי קליפה.
לאחר קריאה של מחרוזת, הקריאה הבאה אל קריאה_מתוך ישתמש בקיים
מחרוזת במקום לקרוא מחרוזת חדשה. כדי לאלץ קריאה של מחרוזת חדשה, קרא ל-
קריאה_מתוך עם ארגומנט מספרי.
ניפוי_באגים_השלם (^X?)
יישומון זה מבצע השלמה רגילה, אך לוכד מעקב בקובץ זמני
של פקודות המעטפת שבוצעו על ידי מערכת ההשלמה. כל ניסיון השלמה
מקבל קובץ משלו. פקודה לצפייה בכל אחד מהקבצים הללו נדחפת לעורך
ערימת חיץ.
עזרה_שלמה (^Xh)
ווידג'ט זה מציג מידע על שמות ההקשר, התגים וה
פונקציות השלמה המשמשות בעת השלמה במיקום הסמן הנוכחי. אם נתון
ארגומנט מספרי שאינו 1 (כמו ב-`ESC-2 ^Xh'), לאחר מכן הסגנונות שבהם נעשה שימוש וה-
יוצגו גם ההקשרים שבהם הם משמשים.
שימו לב שהמידע על סגנונות עשוי להיות חלקי; זה תלוי ב
מידע הזמין מפונקציות ההשלמה שנקראו, אשר בתורן הן
נקבע על ידי הסגנונות של המשתמש והגדרות אחרות.
עזרה_שלמה_כללית
שלא כמו פקודות אחרות המפורטות כאן, יש ליצור זאת כיידג'ט ZLE רגיל
במקום ווידג'ט השלמה (כלומר, עם לִרְאוֹת -N). הוא משמש ליצירת עזרה
עם ווידג'ט הקשור ל- _כְּלָלִי הווידג'ט שתואר לעיל.
אם ווידג'ט זה נוצר באמצעות שם הפונקציה, כפי שהוא כברירת מחדל, אז
כאשר הוא מבוצע, הוא יקרא רצף מקשים. צפוי שזה יהיה קשור לקריאה
לפונקציית השלמה המשתמשת ב- _כְּלָלִי ווידג'ט. הווידג'ט הזה יהיה
בוצע, והמידע סופק באותו פורמט שבו עזרה_שלמה
מוצג יישומון להשלמה הקשרית.
אם שם הווידג'ט מכיל באגים, לדוגמה אם הוא נוצר כ- `לִרְאוֹת -N
ניפוי_באגים_השלם_גנרי עזרה_שלמה_כללית', זה יקרא ויבצע את
מחרוזת מפתח עבור ווידג'ט כללי כמו קודם, אך לאחר מכן צור מידע ניפוי שגיאות
כפי שנעשה על ידי ניפוי_באגים_השלם להשלמה הקשרית.
אם שם הווידג'ט מכיל לא קרא, זה לא יקרא מחרוזת מפתח אלא במקום זאת
לארגן שהשימוש הבא בווידג'ט כללי שיפעל באותו מעטפת יהיה בעל
השפעה כפי שתואר לעיל.
הווידג'ט פועל על ידי הגדרת פרמטר המעטפת ZSH_TRACE_GENERIC_WIDGET אשר הוא
לקרוא על ידי _כְּלָלִיביטול הפרמטר מבטל כל השפעה ממתינה של לא קרא
הטופס.
לדוגמה, לאחר ביצוע הפעולות הבאות:
לִרְאוֹת -N ניפוי_באגים_השלם_גנרי עזרה_שלמה_כללית
bindkey '^x:' ניפוי_באגים_השלם_גנרי
הקלדהCx :' ולאחר מכן רצף המקשים עבור ווידג'ט כללי יגרום למעקב
פלט עבור הווידג'ט הזה שיש לשמור בקובץ.
תגית_השלמה (^אקס)
ווידג'ט זה משלים תגי סמלים שנוצרו על ידי etags or ctags תוכניות (הערה
אין קשר עם התגים של מערכת ההשלמה) המאוחסנים בקובץ תגיותב
הפורמט בו משתמש etags, או תיוגים, בפורמט שנוצר על ידי ctagsזה ייראה
גבה את היררכיית הנתיבים עבור המופע הראשון של כל אחד מהקבצים; אם שניהם קיימים,
הקובץ תגיות עדיף. ניתן לציין את הנתיב המלא אל תגיות or תיוגים פילה
על ידי הגדרת הפרמטר $TAGSFILE or $tagsfile בהתאמה. המתאים
תגי השלמה בהם נעשה שימוש הם etags ו תגיות וירטואליות, אחרי emacs ו-vi בהתאמה.
תוֹעֶלֶת פונקציות
תיאורים מופיעים עבור פונקציות שירות שעשויות להיות שימושיות בעת כתיבת השלמה
פונקציות. אם פונקציות מותקנות בתת-ספריות, רובן נמצאות ב בסיס
ספריית משנה. כמו פונקציות הדוגמה עבור פקודות בהפצה, כלי השירות
פונקציות המייצרות התאמות כולן פועלות לפי המוסכמה של החזרת סטטוס אפס אם הן
השלמות שנוצרו ושונה מאפס אם לא ניתן היה להוסיף השלמות תואמות.
שתי תכונות נוספות מוצעות על ידי _main_complete פונקציה. המערכים פונקציות קומפקטיות ו
פונקציות קומפוסט עשוי להכיל שמות של פונקציות שיש לקרוא להן מיד לפני או
לאחר ניסיון השלמה. פונקציה תיקרא פעם אחת בלבד אלא אם כן היא תיקרא במפורש
מכניס את עצמו מחדש למערך.
_כל_התוויות [ -x ] [ -12VJ ] תג שם מתאר [ הפקודה גדול מ ... ]
זהו ממשק נוח ל- תווית_הבאה הפונקציה למטה, מיישמת את
לולאה המוצגת ב תווית_הבאה דוגמה. ה הפקודה והטיעונים שלה נקראים ל
צור את ההתאמות. האפשרויות המאוחסנות בפרמטר שם באופן אוטומטי
להיות מוכנס לתוך ה- גדול מעבר ל- הפקודהבדרך כלל, הם מונחים ישירות
לאחר הפקודה, אבל אם אחד מהם גדול מs הוא מקף יחיד, הם מוכנסים
מיד לפני כן. אם המקף הוא הארגומנט האחרון, הוא יוסר מ
רשימת הטיעונים שלפני ה הפקודה נקרא. זה מאפשר _כל_התוויות להשתמש
כמעט בכל המקרים שבהם ניתן ליצור את ההתאמות על ידי קריאה אחת אל
קומפד פקודה מובנית או על ידי קריאה לאחת מפונקציות השירות.
לדוגמה:
מקומי לְנַצֵל
...
if _מבוקש פו אז
...
_כל_התוויות Foo לְנַצֵל '...' קומפד ... - התאמות
fi
ישלים את המחרוזות מ- גפרורים פרמטר, באמצעות קומפד עם תוספת
אפשרויות אשר יקבלו עדיפות על פני אלו שנוצרו על ידי _כל_התוויות.
_חֲלוּפָה [ -O שם ] [ -C שם ] מפרט ...
פונקציה זו שימושית במקרים פשוטים שבהם קיימים מספר תגיות.
בעיקרון זה מיישם לולאה כמו זו שתוארה עבור ה- _tags פונקציה
לְהַלָן.
התגים לשימוש והפעולה שיש לבצע אם מתבקש תג מתוארים באמצעות
מה היא מפרטים אשר הם מהצורה: `תג:מתאר:פעולה'. ה תגמוצעים באמצעות
_tags ואם התג מתבקש, ה- פעולה מבוצע עם הנתון
תיאור מתאר. ה פעולהs הם אלה המקובלים על ידי ה- _טיעונים פונקציה
(מתואר להלן), לא כולל את `->היו'ו'=...' צורות.
לדוגמה, פעולה יכולה להיות קריאה לפונקציה פשוטה:
_חֲלוּפָה
משתמשים:משתמש:_משתמשים
מארחים:מארח:_מארחים
מציע שמות משתמש ושמות מארחים כהתאמות אפשריות, שנוצרו על ידי _users ו
_מארחים פונקציות בהתאמה.
כמו _טיעונים, פונקציה זו משתמשת _כל_התוויות לביצוע הפעולות, אשר יהיו
לולאה מעל כל קבוצות התגים. טיפול מיוחד נדרש רק אם יש
תגית חוקית נוספת, לדוגמה בתוך פונקציה הנקראת from _חֲלוּפָה.
האפשרות `-O שם' משמש באותו אופן כמו על ידי _טיעונים פונקציה. ב
במילים אחרות, האלמנטים של ה- שם המערך יועבר אל קומפד מתי
ביצוע פעולה.
כמו _tags פונקציה זו תומכת ב- -C אפשרות לתת שם אחר עבור
שדה הקשר של ארגומנט.
_טיעונים [ -nswWCRS ] [ -A טפיחה ] [ -O שם ] [ -M מפרט משחק ]
[ : ] מפרט ...
_טיעונים [ לִבחוֹר ... ] -- [ -i טפיחות ] [ -s זוג ] [ עזרה ... ]
ניתן להשתמש בפונקציה זו כדי לתת מפרט מלא להשלמה עבור
פקודה שהארגומנטים שלה עומדים במוסכמות סטנדרטיות של אפשרויות וארגומנטים של יוניקס.
אפשרויות סקירה
אפשרויות ל _טיעונים עצמו חייב להיות במילים נפרדות, כלומר -s -w, לא -שוו. ה
האפשרויות אחריהן מופיעות מפרטים המתארים אפשרויות וטיעונים של הניתוח
פקודה. מפרטדגלי אפשרויות המתארים דגלים חייבים להופיע לפני מפרטשמתארים
ארגומנטים שאינם אופציות ("מיקום" או "רגיל") של השורה המנותחת. כדי להימנע
עמימות, כל האפשרויות ל _טיעונים עצמו עשוי להיות מופרד מ- מפרט טפסים על ידי
נקודתיים יחידה.
ה `--הטופס ' משמש לאינטואיציה מפרט טפסים מפלט העזרה של הפקודה
מנותח, ומתואר בפירוט להלן. בוחר עבור ה-`--'הצורה היא
אחרת אותן אפשרויות כמו הטופס הראשון. שימו לב ש-`-sבעקבות--יש לו
משמעות שונה מ-`-s'קודם'--', ושניהם עשויים להופיע.
מתגי האפשרויות -s, -S, -A, -w, ו -W להשפיע על איך _טיעונים מנתח את
ניתח את אפשרויות שורת הפקודה. בוררים אלה שימושיים עבור פקודות עם
ניתוח ארגומנטים סטנדרטי.
האפשרויות של _טיעונים בעלי המשמעויות הבאות:
-n עם אפשרות זו, _טיעונים קובע את הפרמטר נורמרג למיקום של
הטיעון הרגיל הראשון ב מילים מערך, כלומר המיקום שאחרי ה-
סוף האפשרויות. אם טיעון זה לא הושג, נורמרג מוגדר
ל -1על המתקשר להצהיר `מספר שלם נורמרג' אם ה -n האפשרות היא
עבר; אחרת הפרמטר לא בשימוש.
-s אפשר אוֹפְּצִיָה הערימה עבור אפשרויות של אות בודדת, לפיהן מספר אפשרויות
ניתן לשלב אפשרויות בנות אות אחת למילה אחת. לדוגמה,
שתי אפשרויות`-x'ו'-yניתן לשלב ' למילה אחת '-xyעל ידי
כברירת מחדל, כל מילה מתאימה לשם אפשרות יחיד (`-xy' הוא יחיד
אפשרות בשם `xy').
אפשרויות המתחילות במקף בודד או בסימן פלוס זכאיות
ערימה; מילים המתחילות בשני מקפים אינן.
שים לב כי -s לאחר -- בעל משמעות שונה, המתועדת ב-
קטע שכותרתו `גזירת מפרט טפסים מפלט העזרה'.
-w בקומבינציה עם -s, לאפשר אחסון אפשרויות גם אם אחד או יותר מה-
אפשרויות מקבלות ארגומנטים. לדוגמה, אם -x לוקח ויכוח, בלי -s,
`-xy' נחשב כאפשרות יחידה (לא מטופלת); עם -s, -xy הוא
אפשרות עם הארגומנט `y'; עם שניהם -s ו -w, -xy עשויה להיות האפשרות -x
והאופציה -y עם ויכוחים שעוד יבואו.
-W אפשרות זו לוקחת -w שלב נוסף: ניתן להשלים
אפשרויות של אות בודדת גם לאחר ארגומנט שמופיע באותה מילה.
עם זאת, תלוי בפעולה שבוצעה האם האפשרויות באמת יהיו
הושלם בשלב זה. לשליטה רבה יותר, השתמש בפונקציית שירות כמו
_מִשׁמָר כחלק מהפעולה.
-C שנה את הקשר כלכלי פרמטר לפעולה בצורה `->היו'. זֶה
נדון בפירוט להלן.
-R סטטוס החזרה 300 במקום אפס כאשר a מדינה יש לטפל בו, ב-
`->מחרוזת' תחביר.
-S אין להשלים אפשרויות לאחר `--' מופיע על הקו, ולהתעלם מה
`--לדוגמה, עם -S, בתור
פו בר -x -- -y
את `-x' נחשב אופציה, ה-`-yנחשב כטיעון, ו
את `--' נחשב לאף אחד מהם.
-A טפיחה אין להשלים אפשרויות לאחר הארגומנט הראשון שאינו אפשרות בשורה.
טפיחה הוא תבנית התואמת את כל המחרוזות שאינן ניתנות להתייחסות כ
טיעונים. לדוגמה, כדי ליצור _טיעונים הפסק להשלים אפשרויות לאחר
הארגומנט הרגיל הראשון, אך מתעלם מכל המחרוזות המתחילות במקף
גם אם הם לא מתוארים על ידי אחד מהם אופטיספקs, הצורה היא `-A
"-*"'.
-O שם
העבר את אלמנטי המערך שם כארגומנטים לפונקציות שנקראו ל
לבצע פעולהס. זה נדון בפירוט להלן.
-M מפרט משחק
השתמש במפרט ההתאמה מפרט משחק להשלמת שמות אפשרויות ו
ערכים. ברירת המחדל מפרט משחק מאפשר השלמת מילים חלקית לאחר `_'ו
`-', כגון השלמת `-פֶּנסיוֹן מָלֵא'אל'-פו-ברברירת המחדל מפרט משחק היא:
ר:|[_-]=* ר:|=*
מפרט: סקירה
כל אחת מהצורות הבאות היא מפרט תיאור קבוצות בודדות של אפשרויות או
ארגומנטים בשורת הפקודה המנותחת.
n:הודעה:פעולה
n::הודעה:פעולה
זה מתאר את nהטיעון הרגיל. ה הודעה יודפס למעלה
ההתאמות שנוצרו ו- פעולה מציין מה ניתן להשלים בזה
מיקום (ראה להלן). אם יש שתי נקודותיים לפני ה- הודעה מה היא
הארגומנט הוא אופציונלי. אם ה- הודעה מכיל רק רווח לבן, כלום
יודפס מעל ההתאמות אלא אם כן הפעולה מוסיפה הסבר
המחרוזת עצמה.
:הודעה:פעולה
::הודעה:פעולה
דומה, אך מתאר את הבא טיעון, לא משנה איזה מספר קורה
להיות. אם כל הארגומנטים מצוינים בטופס זה בסדר הנכון,
מספרים מיותרים.
*:הודעה:פעולה
*::הודעה:פעולה
*:::הודעה:פעולה
זה מתאר כיצד ארגומנטים (בדרך כלל ארגומנטים שאינם אופציות, ארגומנטים שאינם...)
החל מ - or +) יש להשלים כאשר אף אחת משתי הראשונות אינה
סופקו טפסים. ניתן להשלים מספר רב של ארגומנטים בזה
אופנה.
עם שני נקודתיים לפני ה- הודעה, ה מילים מערך מיוחד ו- נוֹכְחִי
פרמטרים מיוחדים משתנים כך שיתייחסו רק לארגומנטים הרגילים כאשר
מה היא פעולה מבוצע או מוערך. עם שלושה נקודתיים לפני ה- הודעה
הם שונו כך שיתייחסו רק לטיעונים הרגילים המכוסים על ידי זה
תאור.
אופטיספק
אופטיספק:...
זה מתאר אפשרות. הנקודתיים מציינות טיפול עבור אפשרות אחת או יותר
ארגומנטים לאופציה; אם הוא אינו קיים, מניחים שהאופציה מקבלת
אין ויכוחים.
הטפסים הבאים זמינים עבור המשימה הראשונית אופטיספק, בין אם ובין אם לאו
לאפשרות יש ארגומנטים.
*אופטיספק
כאן אופטיספק היא אחת מהצורות הנותרות להלן. זה מצביע על ה
הבא אופטיספק ניתן לחזור על עצמו. אחרת, אם המתאים
האפשרות כבר קיימת בשורת הפקודה משמאל ל
סמן זה לא יוצע שוב.
-optname
+optname
בצורה הפשוטה ביותר, אופטיספק זה רק תחילת שם האפשרות
עם סימן מינוס או פלוס, כגון `-פוהטיעון הראשון בעד
האפשרות (אם קיימת) חייבת לבוא כ- נפרד מילה מיד אחרי ה-
אוֹפְּצִיָה.
אחד מ-`-+optname'ו'+-optnameניתן להשתמש ב' כדי לציין ש
-optname ו +optname שניהם תקפים.
בכל הצורות הנותרות, ה-` המוביל-' עשוי להיות מוחלף על ידי או
בשילוב עם `+'בדרך זו.
-optname-
הארגומנט הראשון של האפשרות חייב לבוא מיד אחרי האפשרות
שם in מה היא אותו מילהלדוגמה, `-פו-:...' מציין כי ה-
אפשרות וארגומנט שהושלמו ייראו כך: `-פוגדול מ'.
-optname+
הטיעון הראשון עשוי להופיע מיד לאחר מכן optname באותו
מילה, או עשויה להופיע כמילה נפרדת לאחר האפשרות. עבור
לדוגמה, `-פו+:...' מציין שהאפשרות והארגומנט שהושלמו
ייראה כמו גם `-פוגדול מ' או '-פו גדול מ'.
-optname=
הטיעון עשוי להופיע כמילה הבאה, או באותה מילה כמו ה-
שם האפשרות בתנאי שהוא מופרד ממנה על ידי סימן שוויון,
למשל `-פו=גדול מ' או '-פו גדול מ'.
-optname=-
הארגומנט של האפשרות חייב להופיע לאחר סימן שוויון ב-
אותה מילה, וייתכן שלא תינתן בטיעון הבא.
אופטיספק[הסבר]
ניתן להוסיף מחרוזת הסבר לכל אחת מהטפסים הקודמים
of אופטיספק על ידי סגירתו בסוגריים, כמו ב-`שאילתה מִבצָע]'.
השמיים מִלוּלִי סגנון משמש כדי להחליט האם מחרוזות ההסבר
מוצגים עם האפשרות ברשימת השלמות.
אם לא ניתנת מחרוזת הסבר בסוגריים מרובעים, אך ה- תיאור אוטומטי
סגנון מוגדר ורק ארגומנט אחד מתואר עבורו אופטיספק, ה
ערך הסגנון מוצג, עם כל הופעה של הרצף
`%d' בו הוחלף על ידי ה- הודעה של הראשון אופרטג שאחריו
מה היא אופטיספק; ראה למטה.
ייתכן שאפשרויות עם ` מילולי+' או '='להופיע, אבל זה
יש להציב את התו במרכאות, לדוגמה `-\+'.
כל אחד אופרטג בעקבות אופטיספק חייב ללבוש אחת מהצורות הבאות:
:הודעה:פעולה
::הודעה:פעולה
ארגומנט לאפשרות; הודעה ו פעולה מטופלים כעבור
ארגומנטים רגילים. בצורה הראשונה, הארגומנט הוא חובה,
ובצורה השנייה זה אופציונלי.
ניתן לחזור על קבוצה זו עבור אפשרויות המקבלות מספר ארגומנטים.
במילים אחרות, :הודעה1:1:הודעה2:2 מציין כי
האפשרות מקבלת שני ארגומנטים.
:*דפוס:הודעה:פעולה
:*דפוס::הודעה:פעולה
:*דפוס:::הודעה:פעולה
זה מתאר מספר ארגומנטים. רק האחרון אופרטג עבור
ניתן לתת אפשרות שלוקחת מספר ארגומנטים בצורה זו. אם ה
דפוס ריק (כלומר :*:), כל המילים הנותרות בשורה הן
להשלמה כפי שתואר על ידי פעולהאחרת, כל המילים
עד וכולל מילה התואמת את דפוס יש להשלים
באמצעות פעולה.
מספר נקודותיים מטופלים כמו עבור ה-`*:...צורות עבור רגילים
טיעונים: כאשר ה הודעה לפניו שתי נקודתיים, ה- מילים
מערך מיוחד ו- נוֹכְחִי פרמטרים מיוחדים משתנים במהלך
הביצוע או ההערכה של פעולה להתייחס רק למילים
לאחר האפשרות. כאשר לפניה שלושה נקודותיים, הן משתנות
להתייחס רק למילים המכוסות בתיאור זה.
כל נקודתיים מילוליים בתוך optname, הודעה, או פעולה חייב להיות קודם לכן על ידי א
קו נטוי הפוך, `\:'.
לכל אחת מהצורות לעיל עשויה להיות רשימה בסוגריים של שמות אפשרויות לפניה.
ומספרי ארגומנטים. אם האפשרות הנתונה נמצאת בשורת הפקודה, האפשרויות וה-
טיעונים המסומנים בסוגריים לא יוצעו. לדוגמה, `(-דוּ -שְׁלוֹשָׁה
1)-אחד:...' משלים את האפשרות '-אחד'; אם זה מופיע בשורת הפקודה, ה-
אפשרויות -דוּ ו -שְׁלוֹשָׁה והטיעון הרגיל הראשון לא יושלם לאחר מכן
זה. `(-פו):...' מציין השלמת ארגומנט רגילה; -פו לא יהיה
הושלם אם ארגומנט זה כבר קיים.
פריטים אחרים עשויים להופיע ברשימת האפשרויות הלא כלולות כדי לציין אפשרויות שונות אחרות
פריטים שאין להחיל כאשר המפרט הנוכחי תואם: א.
כוכב בודד (*) עבור שאר הארגומנטים (כלומר, מפרט של הצורה `*:...');
נקודתיים (:) עבור כל הארגומנטים הרגילים (שאינם אופציות); ומקף (-) לכולם
אפשרויות. לדוגמה, אם `(*)' מופיע לפני אפשרות והאפשרות מופיעה ב
שורת הפקודה, רשימת הארגומנטים הנותרים (אלה המוצגים בטבלה לעיל)
מתחיל ב-`*:') לא יושלם.
כדי לסייע בשימוש חוזר במפרטים, ניתן להקדים כל אחת מהטפסים לעיל
עם `!'; אז הטופס לא יושלם עוד, למרות שאם האפשרות או
אם הארגומנט מופיע בשורת הפקודה, הם ידלגו כרגיל. השימוש העיקרי
כי זה קורה כאשר הארגומנטים ניתנים על ידי מערך, ו _טיעונים נקרא
שוב ושוב עבור הקשרים ספציפיים יותר: בקריאה הראשונה `_טיעונים
אפשרויות_גלובליות' משמש, ובקריאות עוקבות `_טיעונים !$^אפשרויות_גלובליות'.
מפרט: פעולות
בכל אחת מהצורות לעיל, פעולה קובע כיצד יש להשלים
נוצר. למעט ה-`->מחרוזתהטופס למטה, ה- פעולה יבוצע על ידי
קורא ל _כל_התוויות פונקציה לעיבוד כל תוויות התגים. אין טיפול מיוחד ב
יש צורך בתגיות אלא אם כן קריאה לפונקציה מציגה תגיות חדשות.
הפונקציות שנקראו לבצע פעולהs ייקרא עם האלמנטים של ה-
מערך ששמו הוא `-O שםאפשרות ' כארגומנטים. ניתן להשתמש בכך, לדוגמה,
להעביר את אותה קבוצת אפשרויות עבור ה- קומפד מובנה בכולם פעולהs.
הטפסים עבור פעולה הם כדלקמן.
(רווח יחיד ללא מרכאות)
זה שימושי כאשר נדרש ארגומנט אך זה לא אפשרי או
רצוי לייצר התאמות עבורו. ה- הודעה יוצג אך לא
השלמות רשומות. שימו לב שגם במקרה זה, המעי הגס בסוף
הודעה נדרש; ניתן להשמיט אותו רק כאשר לא הודעה וגם לא
פעולה נתון.
(item1 item2 ...)
אחת מתוך רשימה של התאמות אפשריות, לדוגמה:
:פו:(פו בָּר baz)
((item1\:desc1 ...))
דומה לאמור לעיל, אך עם תיאורים לכל התאמה אפשרית. הערה
הקו הנטוי ההפוך שלפני הנקודתיים. לדוגמה,
:foo:((בר\:a ב\:בז))
ההתאמות יופיעו יחד עם תיאוריהן אם
תיאור הסגנון נקבע עם ה- ערכים תגית בהקשר.
->מחרוזת
בצורה זו, _טיעונים מעבד את הארגומנטים והאפשרויות ולאחר מכן
מחזירה שליטה לפונקציה הקוראת עם פרמטרים מוגדרים כדי לציין את
מצב עיבוד; הפונקציה הקוראת מבצעת את הסידורים שלה
ליצירת השלמות. לדוגמה, פונקציות המיישמות מצב
מכונה יכולה להשתמש בסוג פעולה זה.
איפה _טיעונים מפגשים פעולה ב-`->מחרוזתפורמט ', זה יפשט
כל הרווחים הלבנים המובילים והנגמרים מ מחרוזת ולהגדיר את המערך היו ל
הסט של הכל מחרוזתשעבורם יש לבצע פעולה. האלמנטים
של המערך state_descr מוקצים לתואם הודעה שדה מ
כל אחד אופרטג המכיל כזה פעולה.
כברירת מחדל וכמו כל שאר פונקציות ההשלמה המתפקדות היטב,
הפונקציה _arguments מחזירה סטטוס אפס אם הצליחה להוסיף התאמות ומספרים שאינם אפס.
אחרת. עם זאת, אם ה- -R ניתנת אפשרות, _טיעונים במקום זאת
החזר סטטוס של 300 כדי לציין ש מדינה יש לטפל.
נוסף על מדינה ו $state_descr, _טיעונים גם קובע את הגלובלי
פרמטריםהקשר', `קו'ו'opt_argsכמתואר להלן, ואינו
איפוס כל שינוי שבוצע בפרמטרים המיוחדים כגון PREFIX ו מילים.
זה נותן לפונקציית הקריאה את האפשרות לאפס את הפרמטרים הללו או
להפיץ בהם שינויים.
קריאה לפונקציה _טיעונים עם לפחות פעולה אחת המכילה
`->מחרוזתלכן, ' חייב להצהיר על פרמטרים מקומיים מתאימים:
מקומי הקשר היו state_descr קו
ערכת סוגים -A opt_args
כדי למנוע _טיעונים משינוי הסביבה הגלובלית.
{מחרוזת הערכה}
מחרוזת בתוך סוגריים מוערכת כקוד מעטפת כדי ליצור התאמות. אם ה-
מחרוזת הערכה עצמו אינו מתחיל בסוגריים פותחים או בסוגריים מרובעים, הוא
לפצל למילים נפרדות לפני הביצוע.
= פעולה
אם פעולה מתחיל עם `= ' (סימן שוויון ואחריו רווח),
_טיעונים יכניס את תוכן ה- טענה שדה הזרם
ההקשר כאלמנט הראשון החדש ב- מילים מערך מיוחד ותוספת
הערך של נוֹכְחִי פרמטר מיוחד. לכך יש את ההשפעה של
הוספת מילת דמה לשורת הפקודה להשלמה מבלי לשנות
הנקודה שבה מתרחשת ההשלמה.
זה שימושי ביותר עם אחד מהמפרטים שמגבילים את המילים ב
שורת הפקודה שעליה ה- פעולה הוא לפעול (שתי ושלוש נקודות
טפסים לעיל). שימוש מסוים אחד הוא כאשר פעולה עצמו גורם _טיעונים
בטווח מוגבל; יש צורך להשתמש בטריק הזה כדי להכניס
שם הפקודה המתאים בטווח עבור הקריאה השנייה אל _טיעונים ל
להיות מסוגל לנתח את השורה.
מילה ...
מילה ...
זה מכסה את כל הטפסים מלבד אלו הנ"ל. אם פעולה מתחיל עם א
רווח, רשימת המילים הנותרת תופעל ללא שינוי.
אחרת הוא יופעל עם כמה מחרוזות נוספות שיוצבו אחרי הראשון
מילה; אלה יועברו כאופציות ל- קומפד מובנה. הם
לוודא שהמדינה שצוינה על ידי _טיעונים, ב בפרט
תיאורי אפשרויות וארגומנטים, מועברים כהלכה להשלמה
הפקודה. ארגומנטים נוספים אלה נלקחים מפרמטר המערך
`לְנַצֵל'; זה יוגדר לפני ביצוע ה- פעולה ולכן ייתכן
המוזכר בתוכו, בדרך כלל כהרחבה של הצורה `$expl[@]'
אשר שומר על אלמנטים ריקים במערך.
במהלך ביצוע הפעולה המערך `קו' יוגדר למצב הרגיל
ארגומנטים משורת הפקודה, כלומר המילים משורת הפקודה שאחרי ה-
שם הפקודה לא כולל את כל האפשרויות והארגומנטים שלהן. האפשרויות מאוחסנות ב
מערך אסוציאטיביopt_args' עם שמות אפשרויות כמפתחות והארגומנטים שלהן כ-
ערכים. עבור אפשרויות שיש להן יותר מארגומנט אחד, אלה ניתנים כאחד
מחרוזת, מופרדת באמצעות נקודתיים. כל הנקודתיים בארגומנטים המקוריים מופיעים לפניהם.
עם קוים אלכסוניים.
הפרמטר `הקשר' מוגדר בעת חזרה לפונקציית הקריאה לביצוע פעולה
פעולה של הצורה `->מחרוזת'. הוא מוגדר למערך של אלמנטים התואמים ל
האלמנטים של מדינהכל אלמנט הוא שם מתאים לשדה הארגומנט של
ההקשר: או מחרוזת מהצורה `אוֹפְּצִיָה-העדיף-n' בשביל ה nהטיעון של
האפשרות -העדיף, או מחרוזת בצורה `טַעֲנָה-n' בשביל ה nהטיעון. עבור
ארגומנטים של `rest`, כלומר אלו שברשימה בסוף שלא מטופלים לפי מיקום, n
האם המחרוזת `שארלדוגמה, בעת השלמת הטיעון של ה- -o אוֹפְּצִיָה,
השם הוא `אפשרות-o-1', בעוד שעבור הארגומנט הרגיל השני (שאינו אופציה) הוא
`ארגומנט-2'.
יתר על כן, במהלך הערכת ה- פעולה שם ההקשר ב- הקשר כלכלי
הפרמטר משתנה כדי להוסיף את אותה מחרוזת המאוחסנת ב- הקשר
פָּרָמֶטֶר.
האפשרות -C אומר _טיעונים כדי לשנות את הקשר כלכלי פרמטר עבור פעולה של
הצורה `->היוזהו הפרמטר הסטנדרטי המשמש למעקב אחר ה-
ההקשר הנוכחי. כאן זה (ולא ה- הקשר מערך) צריך להיות מקומי ל-
קריאה לפונקציה כדי למנוע החזרת הערך שהשתנה ויש לאתחל אותה
לערך הנוכחי בתחילת הפונקציה:
מקומי curcontext="$curcontext"
זה שימושי כאשר לא ניתן שמספר מדינות יהיו תקפות יחד.
מפרט מספר סטים of אפשרויות
ניתן לציין מספר קבוצות של אפשרויות וארגומנטים עם הקבוצות
מופרדים על ידי מקפים בודדים. המפרטים שלפני המקף הראשון (אם קיים)
משותפים לכל הקבוצות הנותרות. המילה הראשונה בכל קבוצה אחרת מספקת
שם הקבוצה שעשוי להופיע ברשימות אי הכללה במפרטים, בין אם
לבד או לפני אחד מהערכים האפשריים שתוארו לעיל. במקרה השני א
`-' צריך להופיע בין שם זה לשארית.
לדוגמה:
_טיעונים
-a
- Set1
-c
- Set2
-d
':argument:(x2 y2)'
זה מגדיר שתי קבוצות. כאשר שורת הפקודה מכילה את האפשרות `-c', ה'-d'
האפשרות והארגומנט לא ייחשבו כהשלמות אפשריות. כאשר הוא
מכיל `-d' או ארגומנט, האפשרות `-c' לא ייבחן. עם זאת,
אחרי `-aשתי הסטים עדיין ייחשבו תקפים.
אם השם שניתן לאחת הקבוצות המוציאות זו את זו הוא בצורה `(שם)'
אז רק ערך אחד מכל קבוצה יושלם אי פעם; באופן פורמלי יותר, הכל
מפרטים בלעדיים זה את זה את כל שאר המפרטים באותה קבוצה.
זה שימושי להגדרת מספר קבוצות של אפשרויות אשר סותרות זו את זו
ושבו האפשרויות הן כינויים זו לזו. לדוגמה:
_טיעונים
-a -b
- '(לִדחוֹס)'
{-c,--דחיסה}'[דחיסה]'
- (ביטול דחיסה)
{-d,--decompress}'[decompress]'
מכיוון שקוד ההשלמה צריך לנתח את שורת הפקודה בנפרד עבור כל קבוצה, זה
צורת הטיעון איטית ויש להשתמש בה רק בעת הצורך. שימושי
אלטרנטיבה היא לעתים קרובות מפרט אופציה עם ארגומנטים של rest (כמו ב-
`-פו:*:...'); כאן האפשרות -פו בולע את כל הטיעונים הנותרים
המתואר על ידי אופרטג הגדרות.
נגזר מפרט צורות החל מ- מה היא לעזור תפוקה
האפשרות `--מאפשר _טיעונים כדי לחשב את שמות האפשרויות הארוכות
לתמוך ב-`- עזרהאפשרות ' שהיא סטנדרטית בפקודות גנו רבות. הפקודה
מילה נקראת עם הארגומנט `- עזרה' והפלט שנבדק עבור שמות אפשרויות.
ברור שזה יכול להיות מסוכן להעביר זאת לפקודות שאולי אינן תומכות בכך
אפשרות מכיוון שהתנהגות הפקודה אינה מוגדרת.
בנוסף לאפשרויות, `_טיעונים --ינסה להסיק את סוגי הטיעונים
זמין עבור אפשרויות כאשר הטופס `--לִבחוֹר=val' תקף. ניתן גם
ספקו רמזים על ידי בחינת טקסט העזרה של הפקודה והוספת עזרה של
טופס `דפוס:הודעה:פעולה'; שימו לב שאחרים _טיעונים מפרט טפסים אינם בשימוש.
השמיים דפוס מושווה לטקסט העזרה עבור אפשרות, ואם הוא תואם את
הודעה ו פעולה משמשים כמו עבור מפרטי ארגומנטים אחרים. המקרה המיוחד של
`*:'משמעותו גם וגם הודעה ו פעולה ריקים, מה שגורם ל
אפשרויות שאין להן תיאור בפלט העזרה שיסודרו ברשימות לפני
אפשרויות שיש להן תיאור.
לדוגמה:
_טיעונים -- כן לֹא)'
'*=קובץ*:קובץ:_קבצים'
'*=DIR*:ספרייה:_קבצים -/'
'*=PATH*:ספרייה:_קבצים -/'
הנה, `כן'ו'לא' יושלם כארגומנט של אפשרויות שתיאורן
מסתיים בכוכבית; שמות קבצים יושלמו עבור אפשרויות המכילות את תת-המחרוזת
`=קובץ' בתיאור; וספריות יושלמו עבור אפשרויות ש
התיאור מכיל `=DIR' או '=PATHשלושת האחרונים הם למעשה ברירת המחדל ו
לכן אין צורך לתת זאת במפורש, למרות שניתן לעקוף את השימוש ב-
דפוסים אלה. טקסט עזרה טיפוסי המשתמש בתכונה זו הוא:
-ג, --ספרייה=DIR שינוי ל בספרייה DIR
כך שהמפרטים הנ"ל יגרמו להשלמת ספריות לאחר מכן
`--מַדרִיך', אם כי לא אחרי'-C'.
שימו לב גם לכך _טיעונים מנסה לברר באופן אוטומטי אם הארגומנט עבור
האפשרות היא אופציונלית. ניתן לציין זאת במפורש על ידי הכפלת הנקודתיים לפני
מה היא הודעה.
אם דפוס מסתיים ב-`(-)', זה יוסר מהתבנית ומה- פעולה
ישמש רק מיד לאחר ה-`=', לא במילה הבאה. זהו ה-
התנהגות של מפרט נורמלי המוגדר בצורה `=-'.
ה `_טיעונים --ניתן לשלב את האפשרות '-i דפוסילתת דפוסים
עבור אפשרויות שלא יש להשלים. ניתן לתת את התבניות כשם
של פרמטר מערך או כרשימה ליטרלית בסוגריים. לדוגמה,
_טיעונים -- -i
"(--(en|dis)able-FEATURE*)"
יגרום להשלמה להתעלם מהאפשרויות `--הפעל-תכונה'ו
`--השבת-תכונה(דוגמה זו שימושית עם גנו להגדיר).
ה `_טיעונים --ניתן גם לשלב את הטופס ' לאחר מכן באפשרות `-s זוגלתאר
כינויי אפשרויות. ה זוג מורכב מרשימה של דפוסים מתחלפים ו
החלפות מתאימות, מוקפות בסוגריים ומצוטטות כך שיצרו דמות אחת
מילת טיעון ב- _טיעונים שיחה.
לדוגמה, כמה להגדירפלט עזרה של -script מתאר אפשרויות רק כ
`--אפשר-foo', אבל הסקריפט מקבל גם את הצורה השלילית `--disable-fooל
אפשרו למלא את הטופס השני:
_טיעונים -- -s "((#s)--הפעל- --השבת-)"
שונות הערות
לבסוף, שים לב לכך _טיעונים בדרך כלל מצפה להיות הפונקציה העיקרית לטיפול
כל השלמה שלשמה הוא משמש. ייתכן שיש לו תופעות לוואי אשר משנות את
טיפול בכל התאמות שנוספו על ידי פונקציות אחרות שנקראו אחריו. כדי לשלב
_טיעונים עם פונקציות אחרות, יש לקרוא לפונקציות אלו לפני
_טיעונים, כמו פעולה בתוך מפרט, או במטפלים עבור `->היופעולות.
הנה דוגמה כללית יותר לשימוש ב- _טיעונים:
_טיעונים '-l+:שמאל גְבוּל:'
פורמט:נייר גודל: (אות א4)'
'*-עותק:פלט קובץ:_קבצים::רזולוציה:(300 600) '
':פוסטסקריפט קובץ:_קבצים -g \*.\(ps\|eps\)'
'*:עַמוּד מִספָּר:'
זה מתאר שלוש אפשרויות: `-l', `-פוּרמָט', ו'-עותקהראשון לוקח אחד
טיעון מתואר כ-`עזבו גבולשעבורו לא תוצע השלמה מכיוון
של הפעולה הריקה. הטיעון שלה עשוי לבוא מיד לאחר ה-`-l'או שזה יכול להיות
ניתנת כמילה הבאה בשורה.
ה `-פוּרמָטהאפשרות ' מקבלת ארגומנט אחד במילה הבאה, המתוארת כ-`מאמר גודל'
שעבורם רק המחרוזות `מכתב'ו'A4' יושלם.
ה `-עותקהאפשרות ' עשויה להופיע יותר מפעם אחת בשורת הפקודה ודורשת שתי פעולות
ארגומנטים. הראשון הוא חובה וימולא כשם קובץ. השני
אופציונלי (בגלל הנקודה השנייה לפני התיאור `החלטה') ו
יושלם מהמחרוזות `300'ו'600'.
שני התיאורים האחרונים מציינים מה יש להשלים כארגומנטים. הראשון
מתאר את הטיעון הראשון כ-`תיבת הדואר פילהויוצר קבצים המסתיימים ב-`ps'
או `eps' יושלם. התיאור האחרון נותן לכל שאר הארגומנטים את
תיאור `עמוד מספרים' אבל לא מציע השלמות.
_cache_invalid מזהה_מטמון
פונקציה זו מחזירה סטטוס אפס אם מטמון ההשלמות המתאים ל-
מזהה מטמון נתון זקוק לבנייה מחדש. הוא קובע זאת על ידי חיפוש ה-
מדיניות מטמון סגנון עבור ההקשר הנוכחי. זה אמור לספק שם פונקציה
אשר מופעל עם הנתיב המלא לקובץ המטמון הרלוונטי כארגומנט היחיד.
דוגמא:
מדיניות_דוגמה_למטמון () {
# היא שופצה if מטמון is יותר מֵאֲשֶׁר a שבוע זקן
מקומי -a אולדפ
ישןp=( "$1" (ניוטון מטר + 7) )
(( $#oldp ))
}
פונקציית_קריאה לַחֲזוֹר שם [ גדול מ ... ]
אם פונקציה שם קיים, הוא נקרא עם הארגומנטים גדול מs. ה לַחֲזוֹר
הארגומנט נותן את שם הפרמטר שבו הסטטוס המוחזר מהפונקציה
שם יש לאחסן; אם לַחֲזוֹר אם הוא ריק או מקף בודד, הוא מתעלם ממנו.
סטטוס ההחזרה של פונקציית_קריאה הפונקציה עצמה שווה אפס אם שם קיים ו
נקרא ולא אפס אחרת.
תוכנית_שיחות תג מחרוזת ...
פונקציה זו מספקת מנגנון למשתמש לעקוף את השימוש בפונקציה חיצונית
פקודה. זה מחפש את הפקודה סגנון עם המצורף תגאם הסגנון הוא
מוגדר, ערכו משמש כפקודה לביצוע. מחרוזתמהשיחה אל
תוכנית_שיחות, או מהסגנון אם מוגדר, משורשרים עם רווחים ביניהם
והמחרוזת המתקבלת מוערכת. סטטוס ההחזרה הוא סטטוס ההחזרה של
הפקודה קראה.
_קוֹמבִּינַצִיָה [ -s דפוס ] תג סגנון מפרט ... שדה בוחר ...
פונקציה זו משמשת להשלמת צירופי ערכים, לדוגמה זוגות של
שמות מארחים ושמות משתמש. ה סגנון הטיעון נותן את הסגנון שמגדיר את
זוגות; זה נבדק בהקשר עם ה- תג נָקוּב.
שם הסגנון מורכב משמות שדות המופרדים באמצעות מקפים, לדוגמה
`משתמשים-מארחים-פורטיםעבור כל שדה, ערך שכבר ידוע, א מפרט של
טופס `שדה=דפוס' ניתן. לדוגמה, אם שורת הפקודה מציינת עד כה
משתמש `pws', הטיעון `משתמשים=pws' אמור להופיע.
הארגומנט הבא ללא סימן שוויון נלקח כשם השדה שעבורו
יש ליצור השלמות (כנראה שלא אחת מהן) שדהשעבורו ה-
הערך ידוע).
ההתאמות שייווצרו יילקחו מערך הסגנון. אלה אמורות להיות
להכיל את הערכים האפשריים עבור הצירופים בסדר המתאים (משתמשים,
מארחים, פורטים בדוגמה לעיל). השדות השונים הערכים עבור ה-
שדות שונים מופרדים באמצעות נקודתיים. ניתן לשנות זאת באמצעות האפשרות -s
ל _קוֹמבִּינַצִיָה אשר מציין תבנית. בדרך כלל זהו מחלקת תווים, כמו
למשל `-s "[:@]"'במקרה של ה- משתמשים-מארחים סגנון. כל אחד
`שדה=דפוסהמפרט ' מגביל את ההשלמות החלות על אלמנטים של
הסגנון עם שדות תואמים כראוי.
אם לא הוגדר סגנון עם השם הנתון עבור התג הנתון, או אם אף אחד מה-
המחרוזות בערך של הסגנון תואמות, אך שם הפונקציה של השדה הנדרש הופיע לפניהן
מוגדר על ידי קו תחתון, פונקציה זו תיקרא כדי לייצר את ההתאמות.
לדוגמה, אם אין `משתמשים-מארחים-פורטים' או שאין שם מארח תואם כאשר מארח
נדרש, הפונקציה `_מארחים' ייקרא אוטומטית.
אם אותו שם משמש ביותר משדה אחד, בשני ה-`שדה=דפוס'ו
הארגומנט שנותן את שם השדה שיש למלא, את מספר ה-
שדה (החל מ-one) יכול להופיע לאחר שם השדה, מופרד ממנו על ידי
המעי הגס.
כל הארגומנטים לאחר שם השדה הנדרש מועברים אל קומפד בעת יצירת
התאמות מערך הסגנון, או לפונקציות עבור השדות אם הן
שקוראים לו.
_לְתַאֵר [-12JVx] [ -oO | -t תג ] מתאר name1 [ name2 ] [ לִבחוֹר ... ]
[ -- name1 [ name2 ] [ לִבחוֹר ... ] ... ]
פונקציה זו משייכת השלמות עם תיאורים. קבוצות מרובות מופרדות
by -- ניתן לספק, פוטנציאלית עם אפשרויות השלמה שונות לִבחוֹרs.
השמיים מתאר נלקח כמחרוזת שתוצג מעל ההתאמות אם ה- פוּרמָט סגנון עבור
מה היא תיאורים התג מוגדר. אחריו מופיע שם או שניים של מערכים
ואחריו אפשרויות לעבור אל קומפדהמערך הראשון מכיל את האפשרויות
השלמות עם תיאוריהן בצורה `השלמה:תיאורכלשהו
נקודתיים מילוליים ב השלמה יש לכלול במירכאות עם קו נטוי הפוך. אם מערך שני הוא
בהינתן, הוא צריך להכיל את אותו מספר אלמנטים כמו הראשון; במקרה זה ה-
אלמנטים מתאימים מתווספים כהשלמות אפשריות במקום ה- השלמה
מחרוזות מהמערך הראשון. רשימת ההשלמות תשמור את התיאורים
מהמערך הראשון. לבסוף, יכולה להופיע קבוצה של אפשרויות השלמה.
אם האפשרות `-o' מופיע לפני הארגומנט הראשון, ההתאמות שנוספו יהיו
מטופלים כשמות של אפשרויות פקודה (הערה: לא אפשרויות מעטפת), בדרך כלל לאחר
`-', `--' או '+' בשורת הפקודה. במקרה זה _לְתַאֵר משתמש
קידומת מוסתרת, קידומת נדרשת ו מִלוּלִי סגנונות כדי לגלות אם המיתרים צריכים
להתווסף כהשלמות ואם יש להציג את התיאורים. ללא ה-`-o'
אפשרות, רק את מִלוּלִי סגנון משמש כדי לקבוע כיצד יוצגו תיאורים. אם
`-O' משמש במקום `-o', אפשרויות הפקודה הושלמו כפי שנאמר לעיל אך _לְתַאֵר
לא יטפל ב קידומת נדרשת סגנון.
עם -t אפשרות א' תג ניתן לציין. ברירת המחדל היא `ערכיםאו, אם ה- -o
ניתנת אפשרות, `אפשרויות'.
האפשרויות -1, -2, -J, -V, -x מועברים ל תווית_הבאה.
אם נבחר על ידי מקובץ ברשימה סגנון, מחרוזות עם אותו תיאור יהיו
מופיעים יחד ברשימה.
_לְתַאֵר משתמש _כל_התוויות פונקציה ליצירת ההתאמות, כך שזה לא
צריכים להופיע בתוך לולאה מעל תוויות תגיות.
_תֵאוּר [ -x ] [ -12VJ ] תג שם מתאר [ מפרט ... ]
אין לבלבל פונקציה זו עם הקודמת; היא משמשת כעזר.
פונקציה ליצירת אפשרויות ל קומפדהוא קבור בתוך רבים מהגבוהים יותר
פונקציות השלמת רמה ולכן לעתים קרובות אין צורך לקרוא להן ישירות.
הסגנונות המפורטים להלן נבדקים בהקשר הנוכחי באמצעות הנתון תג. ה
אפשרויות שנוצרו עבור קומפד מוכנסים לתוך המערך ששמו שם (זֶהוּ
באופן מסורתי `לְנַצֵל', אך מוסכמה זו אינה נאכפת). התיאור עבור
קבוצת ההתאמות המתאימה מועברת לפונקציה ב מתאר.
הסגנונות שנבדקו הם: פוּרמָט, מוסתר, שידוך, דפוסים מתעלמים מהם ו שם קבוצה.
השמיים פוּרמָט הסגנון נבדק תחילה עבור הנתון תג ואז עבור ה- תיאורים
תג אם לא נמצא ערך, בעוד שהשאר נבדקים רק עבור התג שניתן כ
הארגומנט הראשון. הפונקציה קוראת גם _הגדרה אשר בוחן עוד כמה סגנונות.
המחרוזת המוחזרת על ידי פוּרמָט סגנון (אם קיים) ישונה כך ש-
רצף `%d' מוחלף ב- מתאר ניתן כטיעון שלישי ללא כל
רווח לבן מוביל או נגרר. אם, לאחר הסרת הרווח הלבן, ה- מתאר is
המחרוזת הריקה, סגנון העיצוב לא ישמש והאפשרויות יוכנסו לתוך
שם מערך לא יכיל מחרוזת הסבר שתוצג מעל
גפרורים.
If _תֵאוּר נקרא עם יותר משלושה ארגומנטים, הארגומנט הנוסף מפרטs
צריך להיות בצורת `char:str'. תחליפי רצף בריחה אלה מספקים עבור
מה היא פוּרמָט סגנון: כל הופעה של `%char' יוחלף על ידי מחרוזת.
אם -x אם ניתנה אפשרות, התיאור יועבר אל קומפד באמצעות -x
אפשרות במקום ברירת המחדל -Xמשמעות הדבר היא שהתיאור יהיה
מוצג גם אם אין התאמות תואמות.
האפשרויות הממוקמות במערך שם לקחת בחשבון את ה- שם קבוצה סגנון, אז
משחקים משולבים בקבוצה נפרדת במידת הצורך. לקבוצה בדרך כלל יש את
אלמנטים ממוינים (על ידי העברת האפשרות -J ל קומפד), אבל אם אפשרות מתחילה
עם `-V', `-J', `-1', או '-2' מועבר אל _תֵאוּר, אפשרות זו תהיה
כלול במערך. לכן ייתכן שקבוצת ההשלמה תהיה
לא ממוין על ידי מתן האפשרות `-V', `-1V', או '-2V'.
ברוב המקרים, הפונקציה תשמש כך:
מקומי לְנַצֵל
_תֵאוּר קבצים לְנַצֵל פילה
קומפד "$expl[@]" - "$קבצים[@]"
שימו לב לשימוש בפרמטר לְנַצֵל, המקף ורשימת ההתאמות. כמעט
כל השיחות אל קומפד בתוך מערכת ההשלמה יש להשתמש בפורמט דומה; זה
מבטיח שסגנונות שצוינו על ידי המשתמש מועברים בצורה נכונה למערכות המובנות אשר
ליישם את הפנימיות של ההשלמה.
_לְשַׁגֵר הקשר מחרוזת ...
זה קובע את ההקשר הנוכחי ל הקשר ומחפש פונקציות השלמה כדי
טפל בהקשר זה על ידי חיפוש ברשימת שמות הפקודות או פקודות מיוחדות
הקשרים (כמתואר לעיל עבור compdef) נתון כ מחרוזתהשלמה ראשונה
פונקציה שתוגדר עבור אחד מההקשרים ברשימה משמשת ליצירת
התאמות. בדרך כלל, האחרון מחרוזת is -בְּרִירַת מֶחדָל- כדי לגרום לפונקציה להיות ברירת מחדל
השלמה שתשמש כגיבוי.
הפונקציה קובעת את הפרמטר שירות אל ה מחרוזת נשפט, וקובע את
הקשר/פקודה השדה (הרביעי) של ה $curcontext פרמטר ל הקשר
ניתן כטיעון ראשון.
_קבצים הפונקציה _קבצים שיחות _path_files עם כל הטיעונים זה התקבל מלבד
ל -g ו -/השימוש בשתי אפשרויות אלו תלוי בהגדרה של ה-
תבניות-קבצים סגנון.
פונקציה זו מקבלת את מלוא סט האפשרויות המותרות על ידי _path_filesתיאר
לְהַלָן.
_gnu_generic
פונקציה זו היא עטיפת אלמנטים פשוטה סביב ה- _טיעונים הפונקציה שתוארה לעיל.
ניתן להשתמש בו כדי לקבוע באופן אוטומטי את האפשרויות הארוכות המובנות על ידי פקודות
שמייצרים רשימה כאשר מעבירים את האפשרות `- עזרההוא מיועד לשימוש כ-
פונקציית השלמה ברמה העליונה בפני עצמה. לדוגמה, כדי להפעיל את האפשרות
השלמה עבור הפקודות Foo ו בָּר, להשתמש
compdef _gnu_generic Foo בָּר
לאחר השיחה אל קומפיניט.
מערכת ההשלמה כפי שסופקה היא שמרנית בשימוש שלה בפונקציה זו,
מכיוון שחשוב לוודא שהפקודה מבינה את האפשרות `- עזרה'.
_מִשׁמָר [ אפשרויות ] דפוס מתאר
פונקציה זו מציגה מתאר if דפוס תואם את המחרוזת שיש להשלים. זה
מיועד לשימוש ב- פעולה עבור המפרטים שהועברו אל _טיעונים ו
פונקציות דומות.
סטטוס ההחזרה הוא אפס אם ההודעה הוצגה והמילה להשלמה היא
לא ריק, ולא אפס אחרת.
השמיים דפוס עשויה להיות קודמת לכל אחת מהאפשרויות המובנות על ידי קומפד שיש
עבר מדור לדור _תֵאוּר, כלומר -M, -J, -V, -1, -2, -n, -F ו -Xכל
אפשרויות אלה יתעלמו. זה משתלב בצורה נוחה עם העברת הארגומנטים
מוסכמות של פעולות עבור _טיעונים.
כדוגמה, ניקח פקודה שלוקחת את האפשרויות -n ו -אף אחד, שם -n חייב להיות
ואחריו ערך מספרי באותה מילה. באמצעות:
_טיעונים '-n-: :_מִשׁמָר "[0-9]#" "מספרי עֵרֶך"' '-אַף לֹא אֶחָד'
_טיעונים ניתן להציג את ההודעה `מספרי ערך' ולהשלים
אפשרויות אחרי `-nאם ה-`-n' כבר אחרי ספרה אחת או יותר
(התבנית הועברה אל _מִשׁמָר) רק ההודעה תוצג; אם ה-`-nהוא
ואחריו תו נוסף, רק אפשרויות הושלמו.
_הוֹדָעָה [ -r12 ] [ -VJ קבוצה ] מתאר
_הוֹדָעָה -e [ תג ] מתאר
השמיים מתאר משמש באותו אופן כמו הארגומנט השלישי ל- _תֵאוּר
פונקציה, אלא שהמחרוזת המתקבלת תמיד תוצג בין אם ובין אם לאו
נוצרו התאמות. זה שימושי להצגת הודעת עזרה במקומות
שבהם לא ניתן ליצור השלמות.
השמיים פוּרמָט הסגנון נבדק באמצעות הודעות תגית למציאת הודעה; הרגיל
תָג, תיאורים, משמש רק אם הסגנון אינו מוגדר עם הראשון.
אם -r ניתנת אפשרות, לא נעשה שימוש בסגנון; ה מתאר נלקח פשוטו כמשמעו כ-
מחרוזת להצגה. זה שימושי ביותר כאשר מתאר מגיע מעיבוד מוקדם
רשימת ארגומנטים שכבר מכילה תיאור מורחב.
השמיים -12VJ אפשרויות ו קבוצה מועברים ל קומפד וכך לקבוע את הקבוצה
מחרוזת ההודעה מתווספת ל-.
2 -e הטופס נותן תיאור להשלמות עם התגית תג שיוצג
גם אם אין התאמות לתג זה. טופס זה נקרא על ידי _טיעונים in
במקרה שאין פעולה עבור מפרט אופציה. התג יכול להיות
מושמט ואם כן התג נלקח מהפרמטר $curtag; זה נשמר
על ידי מערכת ההשלמה ולכן בדרך כלל נכון. שימו לב שאם אין
תואמות בזמן קריאה לפונקציה זו, קומפסטייט[הכנס] מנוקה, אז
התאמות נוספות שנוצרו מאוחר יותר אינן מוכנסות לשורת הפקודה.
_רב_חלקים ספטמבר מערך
הוויכוח ספטמבר הוא תו מפריד. ה- מערך יכול להיות שמו של
פרמטר מערך או מערך ליטרלי בצורה `(פו בָּר)', רשימה בסוגריים של
מילים מופרדות ברווח לבן. ההשלמות האפשריות הן המחרוזות מה-
מערך. עם זאת, כל קטע מופרד על ידי ספטמבר יושלם בנפרד. עבור
לדוגמה, ה _זֶפֶת הפונקציה משתמשת ב-`_רב_חלקים / מערך פת'רכדי להשלים קובץ חלקי
נתיבים מהמערך הנתון של נתיבי קבצים מלאים.
השמיים -i אופציות גורמות _רב_חלקים להכניס התאמה ייחודית גם אם זה דורש
יש להוסיף מספר מפרידים. זו בדרך כלל לא ההתנהגות הצפויה
עם שמות קבצים, אך סוגים אחרים של השלמה, לדוגמה אלו עם
קבוצה קבועה של אפשרויות, עשויה להתאים יותר לצורה זו.
כמו פונקציות שירות אחרות, פונקציה זו מקבלת את `-V', `-J', `-1', `-2',
`-n', `-f', `-X', `-M', `-P', `-S', `-r', `-R', ו'-qאפשרויות ' ומעביר אותן אל
מה היא קומפד מובנה.
תווית_הבאה [ -x ] [ -12VJ ] תג שם מתאר [ אוֹפְּצִיָה ... ]
פונקציה זו משמשת למימוש הלולאה על פני תוויות תגיות שונות עבור
תגית מסוימת כמתואר לעיל עבור סדר תגיות סגנון. בכל שיחה זה בודק
כדי לראות אם יש עוד תוויות תגיות; אם יש, זה מחזיר סטטוס אפס,
אחרת לא אפס. מכיוון שפונקציה זו דורשת הגדרת תג נוכחי, היא חייבת
תמיד עקוב אחר קריאה ל _tags or _מבוקש.
השמיים -x12VJ אפשרויות ושלושת הארגומנטים הראשונים מועברים אל _תֵאוּר
פונקציה. במידת הצורך, תג יוחלף בתווית תגית בשיחה זו.
כל תיאור שניתן ב- סדר תגיות סגנון עדיף על פני מתאר עבר ל
תווית_הבאה.
השמיים אוֹפְּצִיָהנתון לאחר ה- מתאר מוגדרים בפרמטר שניתן על ידי שם, ולכן
יש להעביר אל קומפד או כל פונקציה שנקראת כדי לחבר את ההתאמות.
הנה שימוש טיפוסי בפונקציה זו עבור התגית Foo. הקריאה ל _מבוקש
קובע אם תג Foo נדרש בכלל; הלולאה מעל תווית_הבאה מטפל בכל
תוויות שהוגדרו עבור התג ב- סדר תגיות סגנון.
מקומי לְנַצֵל רט=1
...
if _מבוקש פו אז
...
בזמן תווית_הבאה Foo לְנַצֵל '...'; do
קומפד "$expl[@]" ... && רט=0
עשה
...
fi
לַחֲזוֹר ret
_נוֹרמָלִי
זוהי הפונקציה הסטנדרטית הנקראת לטפל בהשלמה מחוץ לכל פונקציה מיוחדת
-הקשר-זה נקרא גם כדי להשלים את מילת הפקודה וגם את הארגומנטים
עבור פקודה. במקרה השני, _נוֹרמָלִי מחפש השלמה מיוחדת לכך
פקודה, ואם אין כזו היא משתמשת בהשלמה עבור -בְּרִירַת מֶחדָל- ההקשר.
שימוש שני הוא לבחון מחדש את שורת הפקודה שצוינה על ידי מילים מערך ו-
$CURENT פרמטרים לאחר שינוים. לדוגמה, הפונקציה
פקודה_מוקדמת, אשר משלים לאחר מפרטי פקודה מקדימים כגון nohup, מסיר
המילה הראשונה מתוך ה מילים מערך, מקטין את נוֹכְחִי פרמטר, לאחר מכן קריאה
_נוֹרמָלִי שוב. ההשפעה היא ש-`nohup cmd ...'מטופל באותו אופן כמו
`cmd ...'.
אם שם הפקודה תואם לאחת מהתבניות שניתנו על ידי אחת מהאפשרויות -p or
-P ל compdef, פונקציית ההשלמה המתאימה נקראת ולאחר מכן ה-
פרמטר _compskip מסומן. אם מוגדר, ההשלמה מסתיימת באותו זמן
נקודה גם אם לא נמצאו התאמות. זוהי אותה השפעה כמו ב-
-רֵאשִׁית- ההקשר.
_options
ניתן להשתמש בזה כדי להשלים את שמות אפשרויות המעטפת. זה מספק התאמה
מפרט שמתעלם מסימן ` מוביללא', מתעלם מקווים תחתונים ומאפשר
אותיות גדולות כך שיתאימו לאותיות הקטנות המקבילות להן (לדוגמה, `גוש',
`נוגלוב', `לא_גלובכל הארגומנטים מופצים אל ה-
קומפד מובנה.
_אפשרויות_סט ו _options_unset
פונקציות אלו משלימות רק אפשרויות הגדרה או ביטול הגדרה, עם אותה התאמה
המפרט המשמש ב- _options פונקציה.
שים לב שעליך להסיר הערות מכמה שורות ב- _main_complete פונקציה עבור
פונקציות אלו יפעלו כראוי. השורות המדוברות משמשות לאחסון
הגדרות אפשרויות בתוקף לפני שווידג'ט ההשלמה מגדיר באופן מקומי את האפשרויות שהוא
צרכים. לכן, פונקציות אלו אינן בשימוש בדרך כלל על ידי מערכת ההשלמה.
_פרמטרים
זה משמש להשלמת שמות פרמטרי המעטפת.
האפשרות `-g דפוסמגביל את ההשלמה לפרמטרים שסוגם תואם ל-
דפוססוג הפרמטר הוא זה שמוצג על ידי `הדפסה ${(t)להפסיק}', ומכאן
שימוש מושכל ב-`*פנימה דפוס כנראה הכרחי.
כל שאר הארגומנטים מועברים אל קומפד מובנה.
_path_files
פונקציה זו משמשת בכל מערכת ההשלמה להשלמת שמות קבצים.
מאפשר השלמת נתיבים חלקיים. לדוגמה, המחרוזת `/u/i/s/sig'אולי
הושלם עד `/usr/include/sys/signal.h'.
האפשרויות שהתקבלו על ידי שניהם _path_files ו _קבצים הם:
-f השלם את כל שמות הקבצים. זוהי ברירת המחדל.
-/ מציין שיש להשלים רק ספריות.
-g דפוס
מציין שרק קבצים התואמים ל- דפוס צריך להסתיים.
-W שבילים
מציין קידומות נתיב שיש להוסיף למחרוזת מה-
שורת פקודה ליצירת שמות הקבצים, אך אין להכניס זאת כ
השלמות ולא מוצגות ברשימות ההשלמות. כאן, שבילים יכול להיות השם
של פרמטר מערך, רשימה מילולית של נתיבים המוקפים בסוגריים או
שם נתיב מוחלט.
-F קבצים שהתעלמו מהם
זה מתנהג כמו עבור האפשרות המתאימה ל- קומפד מובנה. זה
נותן שליטה ישירה על אילו שמות קבצים יש להתעלם מהם. אם האפשרות
אינו נוכח, ה דפוסים מתעלמים מהם נעשה שימוש בסגנון.
שניהם _path_files ו _קבצים קבלו גם את האפשרויות הבאות המועברות אל
קומפד:`-J', `-V', `-1', `-2', `-n', `-X', `-M', `-P', `-S', `-q', `-r', ו
`-R'.
לבסוף, _path_files הפונקציה משתמשת בסגנונות להרחיב, דו - משמעי, מדריכים מיוחדים,
סיומות רשימה ו מיון קבצים מתואר לעיל.
_בחירת_גרסה [ -b תווית מובנית ] [ -c הפקודה ] [ -r שם ]
תווית=דפוס ... תווית [ גדול מ ... ]
פונקציה זו משמשת לפתרון מצבים בהם שם פקודה יחיד דורש
יותר מסוג טיפול אחד, בין אם משום שיש לו יותר מגרסה אחת או
מכיוון שיש התנגשות שמות בין שתי פקודות שונות.
הפקודה להפעלה נלקחת מהאלמנט הראשון של המערך מילים אלא אם כן זה
מבוטל על ידי האפשרות -cפקודה זו מופעלת והפלט שלה מושווה
עם סדרה של תבניות. ניתן לציין ארגומנטים שיועברו לפקודה
בסוף, אחרי כל שאר הארגומנטים. הדפוסים שיש לנסות לפי הסדר ניתנים
לפי הטיעונים תווית=דפוס; אם הפלט של `הפקודה גדול מ ...' מכיל
דפוס, לאחר מכן תווית נבחר כתווית עבור גרסת הפקודה. אם אף אחת מהן אינה
התבניות תואמות, תווית הפקודה הסופית נבחרת ומצב 1 מוחזר.
אם ה`-b תווית מובנית' כאשר ניתנת, הפקודה נבדקת כדי לראות אם היא סופקה
כקליפה מובנית, אולי נטענת אוטומטית; אם כן, התווית תווית מובנית נבחר
כתווית עבור הגרסה.
אם ה`-r שם'ניתן, ה- תווית הפונקציה שנבחרה מאוחסנת בפרמטר ששמו שם.
התוצאות נשמרות גם במטמון _cmd_variant מערך אסוציאטיבי באינדקס על ידי ה
שם הפקודה להפעלת הפקודה.
טיעונים _regex שם מפרט ...
פונקציה זו יוצרת פונקציית השלמה שם אשר תואם את המפרט
מפרטs, קבוצה של ביטויים רגולריים כמתואר להלן. לאחר הרצה
טיעונים _regex, הפונקציה שם יש לקרוא לכך כהשלמה רגילה
פונקציה. התבנית שיש להתאים ניתנת על ידי תוכן ה- מילים מערך למעלה
למיקום הסמן הנוכחי, מחובר יחד עם תווים ריקים; ללא ציטוט
מוחל.
הארגומנטים מקובצים כקבוצות של חלופות המופרדות על ידי `|', אשר מנסים
אחד אחרי השני עד שאחד מהם מתאים. כל חלופה מורכבת מאחד או יותר
מפרטים אשר מנסים משמאל לימין, כאשר כל תבנית תואמת
מוסר בתורו משורת הפקודה הנבדקת, עד שכל הקבוצה
מצליח או עד שאחד מהם נכשל; במקרה האחרון, ניסו את החלופה הבאה.
ניתן לחזור על מבנה זה לעומק שרירותי באמצעות סוגריים; התאמה
מתקדם מבפנים החוצה.
הליך מיוחד מוחל אם אף בדיקה לא מצליחה אך שורת הפקודה נותרת
המחרוזת אינה מכילה תו ריק (מה שמרמז שהמילה הנותרת היא זו שעבורה
(יש ליצור השלמות). יעד ההשלמה מוגבל ל-
המילה שנותרה וכל פעולהs עבור התבניות המתאימות מבוצעות. ב
במקרה זה, שום דבר לא מוסר משורת הפקודה. סדר ה
הערכה של ה- פעולהניתן לקבוע את s על ידי ה- סדר תגיות סגנון; השונים
פורמטים נתמכים על ידי _חֲלוּפָה ניתן להשתמש ב פעולה. ה מתאר משמש
הגדרת פרמטר המערך לְנַצֵל.
ארגומנטים של מפרט לובשים אחת מהצורות הבאות, שבהן מטא-תווים כגון
בתור `(', `)', `#'ו'|' צריך להיות מצוטט.
/דפוס/ [%מבט קדימה%] [-שומר] [:תג:מתאר:פעולה]
זהו רכיב פרימיטיבי יחיד. הפונקציה בודקת האם ה-
תבנית משולבת(#ב)((#ב)דפוס)מבט קדימה*'תואם לשורת הפקודה
מחרוזת. אם כן, `שומר' מוערך ומצב ההחזרה שלו נבדק כדי
לקבוע אם הבדיקה הצליחה. ה דפוס מחרוזת `[]' מובטח
לעולם לא להתאים. ה מבט קדימה לא מוסר משורת הפקודה לפני כן
הדפוס הבא נבדק.
הטיעון שמתחיל ב : משמש באותו אופן כמו ארגומנט ל
_חֲלוּפָה.
רכיב משמש באופן הבא: דפוס נבדק כדי לראות אם הרכיב
כבר קיים בשורת הפקודה. אם הוא קיים, כל הפעולות הבאות
מפרטים נבדקים כדי למצוא משהו להשלים. אם רכיב
מושג אך עדיין לא קיים דפוס כזה בשורת הפקודה, המחרוזת
המכיל את פעולה משמש ליצירת התאמות להוספה בנקודה זו.
/דפוס/+ [%מבט קדימה%] [-שומר] [:תג:מתאר:פעולה]
זה דומה ל-`/דפוס/ ...' אבל החלק השמאלי של שורת הפקודה
מחרוזת (כלומר החלק שכבר תואם על ידי תבניות קודמות) גם היא
נחשב כחלק מיעד ההשלמה.
/דפוס/- [%מבט קדימה%] [-שומר] [:תג:מתאר:פעולה]
זה דומה ל-`/דפוס/ ...' אבל ה- פעולהשל הזרם ו
דפוסים שתואמים בעבר מתעלמים גם אם ה-` הבאדפוס'
תואם למחרוזת הריקה.
( מפרט )
ניתן להשתמש בסוגריים עבור קבוצות מפרטs; שימו לב שכל סוגריים הם סוגריים בודדים
ויכוח ל טיעונים _regex.
מפרט # זה מאפשר כל מספר חזרות של מפרט.
מפרט מפרט
2 מפרטיש להתאים את ה-s אחד אחרי השני כמתואר לעיל.
מפרט | מפרט
אחד מהשניים מפרטניתן להתאים.
הפונקציה מילות_רגקס_רגיל ניתן להשתמש כפונקציית עזר ליצירת התאמות עבור
קבוצה של מילים חלופיות, אולי עם ארגומנטים משלהן כשורת פקודה
ויכוח.
דוגמאות:
טיעונים _regex _tst /$'[^\0]#\0'/
/$'[^\0]#\0'/ :'קומפד אאא'
זה יוצר פונקציה _tst שמשלים aaa כטיעון היחיד שלו. ה- תג
ו תיאור עבור הפעולה הושמטה לשם קיצור (זה עובד אבל לא
מומלץ בשימוש רגיל). הרכיב הראשון תואם את מילת הפקודה, שהיא
שרירותי; השני תואם לכל טיעון. מכיוון שהטיעון הוא גם שרירותי,
כל רכיב הבא לא יהיה תלוי ב aaa להיות נוכח.
טיעונים _regex _tst /$'[^\0]#\0'/
/$'aaa\0'/ :'קומפד אאא'
זהו שימוש טיפוסי יותר; הוא דומה, אך כל דפוס עוקב אחר רק
התאמה אם aaa הוצג כטיעון ראשון.
טיעונים _regex _tst /$'[^\0]#\0'/ \(
/$'aaa\0'/ :'קומפד אאא'
/$'bbb\0'/ :'קומפד bbb' \) \#
בדוגמה זו, ניתן להשלים מספר בלתי מוגבל של ארגומנטים של פקודה.
הארגומנטים הושלמו כ aaa ואפילו טיעונים כמו bbbהשלמת הפעולה נכשלת אלא אם כן
הסט של aaa ו bbb ארגומנטים לפני שהנוכחי תואם כהלכה.
טיעונים _regex _tst /$'[^\0]#\0'/
\( /$'aaa\0'/ :'קומפד אאא' \|
/$'bbb\0'/ :'קומפד bbb' \) \#
זה דומה, אבל גם aaa or bbb ניתן להשלים עבור כל טיעון. בזה
מקרה מילות_רגקס_רגיל ניתן להשתמש בו כדי ליצור ביטוי מתאים עבור
ארגומנטים.
מילות_רגקס_רגיל תג תיאור מפרט ...
ניתן להשתמש בפונקציה זו כדי ליצור ארגומנטים עבור טיעונים _regex הפקודה
אשר ניתן להכניס בכל נקודה שבה צפויה מערכת כללים. תג ו
תיאור תן תגית ותיאור סטנדרטיים הנוגעים להקשר הנוכחי.
כל אחד מפרט מכיל שניים או שלושה ארגומנטים המופרדים על ידי נקודתיים: שימו לב שיש
במקרה זה, אין נקודתיים מובילים.
כל אחד מפרט נותן אחת מתוך קבוצת מילים שניתן להשלים בשלב זה, יחד
עם טיעונים. לכן זה שווה ערך בערך ל- _טיעונים פונקציה בעת שימוש
בהשלמה רגילה (לא רגולרית).
החלק של מפרט לפני הנקודה הראשונה יש להשלים את המילה. ייתכן שזה
מכילים א *המילה כולה, לפני ואחרי ה * הושלם, אך רק ה-
טקסט לפני ה * נדרש כדי שההקשר יתאים, כך שיותר
ניתן להשלים טיעונים לאחר הטופס המקוצר.
החלק השני של מפרט הוא תיאור למילה שהושלמה.
החלק השלישי האופציונלי של מפרט מתאר כיצד מילים הבאות לאחר זו שנוצרת
שהושלמו בעצמם אמורים להיות מושלמים. זה ייבדק על מנת להימנע
בעיות בציטוט. משמעות הדבר היא שבדרך כלל הוא מכיל הפניה ל
מערך המכיל ארגומנטים של ביטוי רגולרי שנוצרו בעבר.
האפשרות -t טווח מציין סיום למילה במקום הרווח הרגיל.
זה מטופל כסיומת הניתנת להסרה אוטומטית באופן שבו מופיעה האפשרות -s ספטמבר ל
_ערכים.
תוצאת העיבוד על ידי מילות_רגקס_רגיל ממוקם במערך תשובה, אשר
יש להפוך אותו למקומי לפונקציה הקוראת. אם קבוצת המילים והארגומנטים
עשוי להיות מותאם שוב ושוב, א # יש לצרף למערך שנוצר באותו זמן
נְקוּדָה.
לדוגמה:
מקומי -a תשובה
מילות_רגקס_רגיל פקודות mydb mydb פקודות'
הוסף:הוסף an כניסה ל mydb:$mydb_add_cmds'
הצג:הצג ערכים in mydb'
טיעונים _regex _mydb "$reply[@]"
_mydb "$@"
זה מציג פונקציית השלמה עבור פקודה mydb אשר דורש שתי פקודות
טיעונים, להוסיף ו לְהַצִיג. לְהַצִיג לא מקבל טיעונים, בעוד שהטיעונים בעד להוסיף יש
כבר הוכן במערך mydb_add_cmds, ככל הנראה בגלל שיחה קודמת
ל מילות_רגקס_רגיל.
_מבוקש [ -x ] [ -12VJ ] תג [ שם מתאר [ הפקודה [ גדול מ ... ] ]
פונקציה זו נקראת כדי להחליט האם תג שכבר רשום על ידי קריאה אל
_tags (ראה להלן) התבקש על ידי המשתמש ולכן יש להשלים אותו
מבוצע עבורו. הוא מחזיר סטטוס אפס אם התג מתבקש והוא שונה מאפס
אחרת. הפונקציה משמשת בדרך כלל כחלק מלולאה מעל תגיות שונות כ-
התעופה
_tags Foo בָּר באז
בזמן _תגיות; do
if _מבוקש פו אז
... # לבצע השלמה ל Foo
fi
... # מבחן מה היא תיוגים בָּר ו באז in מה היא אותו דרך
... # יציאה לולאה if גפרורים היו נוצר
עשה
שים לב שהבדיקה לבדיקת האם נוצרו התאמות אינה מתבצעת עד ל-
סוף ה _tags לולאה. זה כדי שהמשתמש יוכל להגדיר את סדר תגיות סגנון ל
ציין קבוצת תגיות שיש להשלים בו זמנית.
If שם ו מתאר ניתנים, _מבוקש קורא ל- _תֵאוּר לתפקד עם אלה
ארגומנטים יחד עם האפשרויות שהועברו אל _מבוקש.
If הפקודה ניתן, ה _כל_התוויות הפונקציה תיקרא באופן מיידי עם
אותם טיעונים. במקרים פשוטים זה מאפשר לבצע את הבדיקה עבור ה
תגית והתאמה בבת אחת. לדוגמה:
מקומי לְנַצֵל רט=1
_tags Foo בָּר באז
בזמן _תגיות; do
_מבוקש Foo לְנַצֵל 'תֵאוּר'
קומפד פו בר פובז && רט=0
...
(( ret )) || לשבור
עשה
אם הפקודה לא קומפד, עליה בכל זאת להיות מוכנה להתמודד עם אותו הדבר
אפשרויות.
_אחזור_מטמון מזהה_מטמון
פונקציה זו מאחזרת מידע השלמה מהקובץ שניתן על ידי
מזהה_מטמון, מאוחסן בספרייה שצוינה על ידי נתיב המטמון סגנון אשר
ברירת מחדל ל ~/.zcompcacheסטטוס ההחזרה הוא אפס אם האחזור הצליח.
הוא ינסה לאחזר רק אם השתמש במטמון הסגנון מוגדר, אז אפשר לקרוא לזה
לתפקד מבלי לדאוג האם המשתמש רוצה להשתמש בשכבת המטמון.
לִרְאוֹת _store_cache להלן לפרטים נוספים.
חלקי_ספט
פונקציה זו מקבלת מערכים מתחלפים ומפרידים כארגומנטים. המערכים
ציין השלמות עבור חלקי מחרוזות שיופרדו על ידי המפרידים.
מערכים יכולים להיות שמות של פרמטרים של מערך או רשימה של מילים במירכאות ב
סוגריים. לדוגמה, עם המערך `מארחים=(ftp חֲדָשׁוֹת)השיחהחלקי_ספט
(פו בַּר)' @ מארחים' ישלים את המחרוזת'f'אל'Foo' והמחרוזת `ב@n' ל
`בר@ניוז'.
פונקציה זו מקבלת את קומפד אפשרויות `-V', `-J', `-1', `-2', `-n', `-X', `-M',
`-P', `-S', `-r', `-R', ו'-qומעביר אותם אל ה- קומפד מובנה רגיל ל
הוסף את ההתאמות.
_רֶצֶף [ -s ספטמבר ] [ -n מקסימום ] [ -d ] פונקציה [ - ]...
פונקציה זו היא עטיפה לפונקציות אחרות להשלמת פריטים בפורמט נפרד
רשימה. אותה פונקציה משמשת להשלמת כל פריט ברשימה. המפריד הוא
שצוין עם ה -s אוֹפְּצִיָה. אם -s מושמט, הוא ישתמש ב-`,ערכים כפולים
אינם תואמים אלא אם כן -d מצוין. אם יש מספר קבוע או מקסימלי של
פריטים ברשימה, ניתן לציין זאת באמצעות -n אוֹפְּצִיָה.
Common קומפד אפשרויות מועברות לפונקציה. ניתן להשתמש ב קומפד
ישירות עם _רֶצֶף, אם כי _ערכים עשוי להיות מתאים יותר במצב זה.
_הגדרה תג [ קבוצה ]
פונקציה זו מגדירה את הפרמטרים המיוחדים בהם משתמשת מערכת ההשלמה
באופן הולם עבור ה- תג נתון כארגומנט הראשון. הוא משתמש בסגנונות
רשימה-צבעים, רשימות מלאות, רשימת שורות ראשונות, ברגע האחרון, קבל בדיוק, תפריט ו
רשימת כוחות.
האופציונלי קבוצה מספק את שם הקבוצה בה יתקיימו המשחקים
ממוקם. אם הוא לא ניתן, ה- תג משמש כשם הקבוצה.
פונקציה זו נקראת אוטומטית מ _תֵאוּר ולכן אינו בדרך כלל
קרא במפורש.
_store_cache מזהה_מטמון להפסיק ...
פונקציה זו, יחד עם _אחזור_מטמון ו _cache_invalid, מיישם א
שכבת מטמון שניתן להשתמש בה בכל פונקציית השלמה. נתונים שהתקבלו על ידי
פעולות יקרות נשמרות בפרמטרים; פונקציה זו לאחר מכן מפיקה את הערכים של
פרמטרים אלה לקובץ. לאחר מכן ניתן לאחזר את הנתונים במהירות מאותו קובץ
באמצעות _אחזור_מטמון, אפילו במקרים שונים של הקליפה.
השמיים מזהה_מטמון מציין את הקובץ שאליו יש לשגר את הנתונים.
הקובץ מאוחסן בספרייה שצוינה על ידי נתיב המטמון סגנון שברירת המחדל שלו היא
~/.zcompcache. השאר להפסיקארגומנטים של s הם הפרמטרים שיש לdump אליהם
קובץ.
סטטוס ההחזרה הוא אפס אם האחסון הצליח. הפונקציה תעשה זאת רק
נסה לאחסן אם השתמש במטמון הסגנון מוגדר, כך שתוכל לקרוא לפונקציה הזו
מבלי לדאוג האם המשתמש רוצה להשתמש בשכבת המטמון.
פונקציית ההשלמה עשויה להימנע מקריאה _אחזור_מטמון כאשר כבר יש לו את
נתוני השלמה זמינים כפרמטרים. עם זאת, במקרה כזה עליו לקרוא ל-
_cache_invalid כדי לבדוק האם הנתונים בפרמטרים ובמטמון הם
עדיין בתוקף.
ראה את פונקציית ההשלמה _perl_modules לדוגמה פשוטה של השימוש ב-
שכבת אחסון במטמון.
_tags [[ -C שם ] תג ... ]
אם נקרא עם ארגומנטים, אלה נחשבים כשמות של תגיות תקפות עבור
השלמות בהקשר הנוכחי. תגיות אלו מאוחסנות באופן פנימי וממוינות לפי
באמצעות סדר תגיות סגנון.
בשלב הבא, _tags נקרא שוב ושוב ללא ארגומנטים מאותה השלמה
פונקציה. פעולה זו בוחרת באופן רציף את קבוצת התגים הראשונה, השנייה וכו' המבוקשת.
על ידי המשתמש. סטטוס ההחזרה הוא אפס אם לפחות אחד מהתגים מתבקש
ולא אפס אחרת. כדי לבדוק אם יש לנסות תגית מסוימת, ה- _מבוקש
יש לקרוא לפונקציה (ראה לעיל).
אם `-C שם' נתון, שם מאוחסן זמנית בשדה הארגומנט (החמישי)
של ההקשר ב- הקשר כלכלי הפרמטר במהלך הקריאה אל _tags; השדה הוא
משוחזר ביציאה. זה מאפשר _tags להשתמש בהקשר ספציפי יותר מבלי
כדי לשנות ולאפס את הקשר כלכלי פרמטר (שיש לו את אותה השפעה).
_ערכים [ -O שם ] [ -s ספטמבר ] [ -S ספטמבר ] [ -שֵׁרוּתִים ] יורד מפרט ...
זה משמש להשלמת מילות מפתח שרירותיות (ערכים) והארגומנטים או הרשימות שלהן.
של שילובים כאלה.
אם הארגומנט הראשון הוא האפשרות `-O שם', הוא ישמש באותו אופן כמו
על ידי _טיעונים פונקציה. במילים אחרות, האלמנטים של שם המערך יהיה
עבר ל קומפד בעת ביצוע פעולה.
אם הארגומנט הראשון (או הארגומנט הראשון אחרי `-O שם') הוא `-s', הבא
הארגומנט משמש כתו המפריד בין ערכים מרובים. תו זה
נוסף אוטומטית לאחר כל ערך באופן הניתן להסרה אוטומטית (ראה להלן);
כל הערכים הושלמו על ידי `_ערכים -s' מופיעים באותה מילה בשורת הפקודה,
שלא כמו השלמה באמצעות _טיעוניםאם אפשרות זו אינה קיימת, רק אפשרות אחת
הערך יושלם לפי מילה.
בדרך כלל, _ערכים ישתמש במילה הנוכחית רק כדי לקבוע אילו ערכים הם
כבר קיימים בשורת הפקודה ולכן אין להשלים אותם שוב. אם
מה היא -w כאשר ניתנת אפשרות, נבחנים גם טיעונים אחרים.
הארגומנט הראשון שאינו אופציה משמש כמחרוזת להדפסה כתיאור לפני
רישום הערכים.
כל שאר הארגומנטים מתארים את הערכים האפשריים ואת הארגומנטים שלהם באותו אופן
פורמט המשמש לתיאור האפשרויות על ידי ה- _טיעונים פונקציה (ראה לעיל).
ההבדלים היחידים הם שאין צורך בסימן מינוס או פלוס בהתחלה,
לערכים יכול להיות רק ארגומנט אחד, וצורות הפעולה המתחילות בערך שווה
שלטים אינם נתמכים.
ניתן להגדיר את התו המפריד בין ערך לארגומנט שלו באמצעות האפשרות -S
(כמו -s, ואחריו התו שישמש כמפריד בארגומנט הבא).
כברירת מחדל, סימן השוויון ישמש כמפריד בין ערכים לבין
ארגומנטים.
דוגמא:
_ערכים -s , 'תֵאוּר'
*פו[בר]*
'(שתיים)*אחד[מספר]:ראשון לִסְפּוֹר:'
שניים [עוד אחד מספר]::שנייה ספירה:(1 2 3) '
זה מתאר שלושה ערכים אפשריים: `Foo', `אחד', ו'שתייםהראשון הוא
מתואר כ-`בָּר', אינו מקבל טיעון ויכול להופיע יותר מפעם אחת. השני הוא
מתואר כ-`מספר', עשוי להופיע יותר מפעם אחת, ומקבל ארגומנט חובה אחד
מתואר כ-`ראשון לספור'; לא צוינה פעולה, ולכן היא לא תושלם.
ה `(דוּ)' בהתחלה אומר שאם הערך 'אחד' נמצא על הקו, הערך
`שתיים' לא ייחשב עוד כהשלמה אפשרית. לבסוף, הערך האחרון
(`שתיים') מתואר כ-`אַחֵר מספר' ומקבל ארגומנט אופציונלי המתואר
בתור `שני לספור' שעבורו ההשלמות (מופיעות לאחר `=') הם `1', `2',
ו- `3'. ה _ערכים הפונקציה תשלים רשימות של ערכים אלה מופרדים על ידי
פסיקים.
כמו _טיעונים, פונקציה זו מוסיפה באופן זמני רכיב שם הקשר נוסף ל
אלמנט הארגומנטים (החמישי) של ההקשר הנוכחי בעת ביצוע ה-
פעולהכאן שם זה הוא רק שם הערך שעבורו הארגומנט הוא
הושלמה.
הסגנון מִלוּלִי משמש כדי להחליט אם התיאורים עבור הערכים (אך לא
אלו עבור הארגומנטים) צריכים להיות מודפסים.
המערך האסוציאטיבי val_args משמש לדיווח על ערכים והארגומנטים שלהם; זה
עובד באופן דומה ל- opt_args מערך אסוציאטיבי המשמש את _טיעונים. מכאן
שיחות פונקציות _ערכים צריך להצהיר על הפרמטרים המקומיים היו, state_descr,
קו, הקשר ו val_args:
מקומי הקשר היו state_descr קו
ערכת סוגים -A val_args
בעת שימוש בפעולה מהצורה `->מחרוזת'. בעזרת פונקציה זו ה הקשר
הפרמטר יוגדר לשם הערך שאת הארגומנט שלו יש להשלים.
שים לב שעבור _ערכים, ה היו ו state_descr הם סקלרים ולא מערכים.
מוחזר רק מצב תואם יחיד.
שימו לב גם לכך _ערכים בדרך כלל מוסיף את התו המשמש כמפריד בין
ערכים כסיומת הניתנת להסרה אוטומטית (בדומה ל-`/' אחרי ספרייה). עם זאת,
זה לא אפשרי עבור `->מחרוזתפעולה כהתאמה לטיעון
נוצר על ידי פונקציית הקריאה. כדי לקבל את ההתנהגות הרגילה, הקריאה
הפונקציה יכולה להוסיף את המפריד x כסיומת על ידי העברת האפשרויות `-qS xאו
באופן ישיר או עקיף ל קומפד.
האפשרות -C מטופל באותו אופן כמו שהוא מטופל על ידי _טיעוניםבמקרה כזה ה-
פרמטר הקשר כלכלי צריך להיות מקומי במקום הקשר (כפי שתואר לעיל).
_מבוקש [ -x ] [ -C שם ] [ -12VJ ] תג שם מתאר הפקודה [ גדול מ ...]
בהקשרים רבים, השלמה יכולה ליצור רק קבוצה אחת מסוימת של התאמות,
בדרך כלל מתאים לתג יחיד. עם זאת, עדיין יש צורך להחליט
האם המשתמש זקוק להתאמות מסוג זה. פונקציה זו שימושית במקרה כזה
מקרה.
הטיעונים ל _מבוקש זהים לאלה של _מבוקש, כלומר טיעונים להיות
עבר ל _תֵאוּרעם זאת, במקרה זה ה- הפקודה אינו אופציונלי; הכל
עיבוד התגים, כולל הלולאה מעל התגים ותוויות התגים וגם ה-
יצירת התאמות, מתבצעת באופן אוטומטי על ידי _מבוקש.
לכן, להציע תגית אחת בלבד ולהוסיף מיד את ההתאמות המתאימות עם
תיאור נתון:
מקומי לְנַצֵל
_מבוקש תג לְנַצֵל 'תֵאוּר'
קומפד התאמות...
שימו לב, באשר ל _מבוקש, ה הפקודה חייב להיות מסוגל לקבל אפשרויות כדי להיות
עבר ל קומפד.
כמו _tags פונקציה זו תומכת ב- -C אפשרות לתת שם אחר עבור
שדה הקשר של ארגומנט. ה -x לאפשרות יש את אותה משמעות כמו ל- _תֵאוּר.
סִיוּם מדריכים
בהפצת המקור, הקבצים נמצאים בתת-ספריות שונות של
סיום ספרייה. ייתכן שהם הותקנו באותו מבנה, או בתוך אחד
ספרייה בעלת פונקציה יחידה. להלן תיאור של הקבצים שנמצאו ב
מבנה הספריות המקורי. אם ברצונך לשנות קובץ מותקן, תצטרך
העתק אותו לספרייה כלשהי שמופיעה מוקדם יותר ב fpath מאשר הספרייה הסטנדרטית
איפה זה מופיע.
בסיס פונקציות הליבה ווידג'טים מיוחדים להשלמה נקשרים אוטומטית למקשים. אתה
בוודאי אצטרך את רובם, אם כי כנראה שלא אצטרך לשנות אותם.
רבים מאלה מתועדים לעיל.
ZSH פונקציות להשלמת ארגומנטים של פקודות מובנות במעטפת ופונקציות שירות
לשם כך. חלק מאלה משמשים גם פונקציות מה- יוניקס במדריך.
יוניקס פונקציות להשלמת ארגומנטים של פקודות חיצוניות וסוויטות של פקודות.
ייתכן שיהיה צורך לשנות אותם עבור המערכת שלך, אם כי במקרים רבים ניסיון כלשהו נדרש.
נעשה כדי להחליט איזו גרסה של פקודה קיימת. לדוגמה, השלמה עבור
מה היא הר הפקודה מנסה לקבוע את המערכת שעליה היא פועלת, תוך כדי השלמתה
עבור כלי עזר רבים אחרים, נסו להחליט האם גרסת GNU של הפקודה נמצאת ב
שימוש, ולכן האם ה- - עזרה האפשרות נתמכת.
X, AIX, BSD, ...
השלמה ופונקציית תועלת עבור פקודות זמינות רק בחלק מהמערכות.
אינם מסודרים בצורה היררכית, כך, למשל, גם ה לינוקס ו דביאן
מדריכים, כמו גם את X ספרייה, עשויה להיות שימושית במערכת שלך.
השתמש ב-zshcompsys באופן מקוון באמצעות שירותי onworks.net