זוהי הפקודה ctags-exuberant שניתן להריץ בספק האירוח החינמי של OnWorks באמצעות אחת מתחנות העבודה המקוונות החינמיות שלנו כגון Ubuntu Online, Fedora Online, אמולטור מקוון של Windows או אמולטור מקוון של MAC OS.
תָכְנִית:
שֵׁם
ctags - יצירת קבצי תגיות עבור קוד המקור
תַקצִיר
ctags [אפשרויות] [קבצים)]
etags [אפשרויות] [קבצים)]
תיאור
השמיים ctags ו etags תוכניות (להלן יכונות יחד ctags, למעט היכן ש
(מובחן) ליצור קובץ אינדקס (או "תג") עבור מגוון אובייקטי שפה שנמצאו
in קבצים)קובץ תגיות זה מאפשר לאתר פריטים אלה במהירות ובקלות באמצעות טקסט
עורך או כלי עזר אחר. "תג" מסמל אובייקט שפה שעבורו ערך אינדקס
זמין (או, לחלופין, ערך האינדקס שנוצר עבור אותו אובייקט).
לחלופין, ctags יכול ליצור קובץ הפניות צולבות אשר מפרט, באופן קריא על ידי בני אדם
טופס, מידע על אובייקטי המקור השונים הנמצאים בקבוצת קבצי שפה.
קבצי אינדקס תגיות נתמכים על ידי עורכים רבים, המאפשרים למשתמש לאתר את
אובייקט המשויך לשם המופיע בקובץ מקור וקפיצה לקובץ ולשורה
אשר מגדיר את השם. אלה הידועים בזמן פרסום זה הם:
Vi(1) ונגזרותיו (למשל אלביס, וים, וייל, לממי), פָּרִיך, אמאק, FTE (מִתקַפֵּל
עורך טקסט), JED, jEdit, מְמוּקָשׁ, לא לערוך (עריכת נירוונה), TSE (עורך SemWare),
UltraEdit, סביבת עבודה, X2, זאוס
תגיות מסוגל לייצר סוגים שונים של תגים עבור כל אחד ממגוון רחב של
שפות. לרשימה מלאה של שפות נתמכות, השמות שבהן הן נקראות
מזוהים, וסוגי התגים שנוצרים עבור כל אחד מהם, ראו את --שפות-רשימה
ו --רשימה-סוגים אפשרויות.
מקור קבצים
אלא אם כן ה --כוח-שפה אם האפשרות צוינה, שפת כל קובץ מקור היא
נבחר אוטומטית על סמך מיפוי של שמות קבצים לשפות. המיפויים ב
ניתן להציג את האפקט עבור כל שפה באמצעות --רשימת-מפות אפשרות וייתכן שתשתנה
באמצעות --langmap אפשרות. בפלטפורמות התומכות בה, אם שם הקובץ אינו
ממופה לשפה והקובץ ניתן להפעלה, השורה הראשונה של הקובץ מסומנת ל-
בדוק אם הקובץ הוא סקריפט "#!" עבור שפה מזוהה.
כברירת מחדל, כל שמות הקבצים האחרים מתעלמים. זה מאפשר הפעלה ctags על כל הקבצים ב
או ספרייה אחת (למשל "ctags *"), או על כל הקבצים בספריית מקור שלמה
עץ (למשל "ctags -R"), מכיוון שרק הקבצים ששמותיהם ממופים לשפות יוצגו
סרק.
הסיבה שסיומות .h ממופות לקבצי C++ ולא לקבצי C היא בגלל שזה
נפוץ להשתמש בסיומת .h ב-C++, ואין שום נזק בטיפול בהן כקבצי C++.]
אפשרויות
למרות שפע האפשרויות הזמינות, ברירת המחדל מוגדרת כך ש ctags לרוב
מבוצע ללא אפשרויות (למשל "ctags *", או "ctags -R"), מה שייצור קובץ תגיות
בספרייה הנוכחית עבור כל קבצי המקור המזוהים. האפשרויות המתוארות להלן הן
מסופק אך ורק כדי לאפשר התאמה אישית כדי לענות על צרכים מיוחדים.
שים לב שרווחים המפרידים בין האפשרויות הבנות אות בודדת לבין הפרמטרים שלהן הם אופציונליים.
שימו לב גם שהפרמטרים הבוליאניים לאפשרויות הטופס הארוך (אלה המתחילות ב-"--"
וזה לוקח "כן|לא]ניתן להשמיט את הפרמטר "), ובמקרה כזה "=כן"מרומז.
(לְמָשָׁל --סוג שווה --סוג=כן). שימו לב עוד כי "=1" ו- "=on"נחשבים
מילים נרדפות ל-"="כן", וכי "=0" ו- "=כבוי" נחשבים מילים נרדפות ל-"=לא".
חלק מהאפשרויות מתעלמות או שימושיות רק כאשר הן פועלות במצב etags (ראה
-e אופציה). אפשרויות כאלה יצוינו.
רוב האפשרויות עשויות להופיע בכל מקום בשורת הפקודה, ולהשפיע רק על הקבצים אשר
עקוב אחר האפשרות. עם זאת, כמה אפשרויות חייבות להופיע לפני שם הקובץ הראשון ויהיו
יצוין ככזה.
אפשרויות המקבלות שמות שפה יקבלו שמות אלה באותיות גדולות או קטנות. ראה
מה היא --שפות-רשימה אפשרות לרשימה מלאה של שמות השפות המובנות.
-a שווה ערך ל --לְצַרֵף.
-B השתמש בתבניות חיפוש לאחור (למשל ?pattern?). [התעלמות מכך במצב etags]
-e הפעל את מצב etags, אשר ייצור קובץ תגיות לשימוש עם עורך Emacs.
לחלופין, אם ctags מופעל על ידי שם המכיל את המחרוזת "etags" (או על ידי
שינוי שם, או יצירת קישור, לקובץ ההפעלה), מצב etags יופעל. זה
האפשרות חייבת להופיע לפני שם הקובץ הראשון.
-f Tagfile
השתמש בשם שצוין על ידי Tagfile עבור קובץ התגיות (ברירת המחדל היא "תגיות", או "תגיות" כאשר
פועל במצב etags). אם Tagfile מצוין כ-"-", אז קובץ התגיות נכתב
לפלט סטנדרטי במקום זאת. תגיות יסרב בעקשנות לקבל פקודות אם Tagfile
קיים והשורה הראשונה שלו מכילה משהו שאינו שורת תגים חוקית. זה יעשה זאת
הצילו את הצוואר שלכם אם בטעות תקלידו "ctags -f *.c", שאחרת היה דורס
קובץ ה-C הראשון שלך עם התגים שנוצרו על ידי השאר! הוא גם יסרב לקבל
שם קובץ מרובה תווים שמתחיל בתו '-' (מקף), מכיוון שזהו רוב
כנראה שזה אומר שהשמטת את שם קובץ התגית ואפשרות זו ניסתה לתפוס את
האפשרות הבאה כשם הקובץ. אם אתה באמת רוצה לתת שם לקובץ תג הפלט שלך
"-ugly", ציין אותו כ-"./-ugly". אפשרות זו חייבת להופיע לפני שם הקובץ הראשון.
אם אפשרות זו צוינה יותר מפעם אחת, רק האחרונה תחול.
-F השתמש בתבניות חיפוש קדימה (לדוגמה /pattern/) (ברירת מחדל). [מתעלם במצב etags]
-h רשימה
מציין רשימה של סיומות קבצים, מופרדות בנקודות, אשר יש להשתמש בהן
מתפרשים כקבצי include (או קבצי header). כדי לציין קבצים ללא סיומת, השתמשו
נקודה שאינה מלווית בתו שאינו נקודה (לדוגמה ".", "..x", ".x."). אפשרות זו
משפיע רק על אופן פירוש היקף התגיות מסוגים מסוימים (למשל
בין אם הם נחשבים גלויים באופן גלוי לעין או גלויים רק בתוך
קובץ שבו הם מוגדרים); הוא אינו ממפה את הסיומת לשום קובץ מסוים
שפה. כל תגית שנמצאת בקובץ שאינו נכלל ואינה ניתנת לצפייה (לדוגמה
מקושר אל) מקובץ אחר נחשב כבעל טווח מוגבל לקובץ (למשל, סטטי).
שום תג המופיע בקובץ include לא ייחשב כבעל מוגבלות קובץ.
טווח. אם התו הראשון ברשימה הוא סימן פלוס, אז הסיומות ב
הרשימה תתווסף לרשימה הנוכחית; אחרת, הרשימה תחליף את
הרשימה הנוכחית. ראה גם את --היקף-קבצים אפשרות. רשימת ברירת המחדל היא
".hHhh.hpp.hxx.h++.inc.def". כדי לשחזר את רשימת ברירת המחדל, ציין -h ברירת מחדל. פתק
שאם סיומת שסופקה לאפשרות זו אינה ממופה כבר לאפשרות מסוימת
שפה (ראה מקור קבצים, לעיל), תצטרכו גם להשתמש ב- --langmap or
--כוח-שפה אוֹפְּצִיָה.
-I רשימת מזהים
מציין רשימה של מזהים שיש לטפל בהם באופן מיוחד בעת ניתוח C ו-
קבצי מקור של ++C. אפשרות זו ניתנת במיוחד לטיפול במקרים מיוחדים
הנובעים משימוש במאקרו של קדם-מעבד. כאשר המזהים המפורטים הם
מזהים פשוטים, מזהים אלה יתעלמו במהלך ניתוח המקור
קבצים. אם למזהה יש סיומת של תו '+', ctags יתעלם גם מכל דבר
רשימת ארגומנטים מוקפת בסוגריים שעשויה לבוא מיד לאחר המזהה ב-
קבצי מקור. אם שני מזהים מופרדים באמצעות התו '=', הראשון
מזהים מוחלף על ידי המזהים השניים למטרות ניתוח. רשימת
מזהים עשויים להינתן ישירות בשורת הפקודה או להיקרא ממערכת נפרדת
קובץ. אם התו הראשון של רשימת מזהים הוא '@', '.' או מפריד נתיבים
('/' או '\'), או ששני התווים הראשונים מציינים אות כונן (לדוגמה "C:"), ה-
פרמטר רשימת מזהים יתפרש כשם קובץ שממנו ניתן לקרוא רשימה
של מזהים, אחד לכל שורת קלט. אחרת, רשימת מזהים היא רשימה של
מזהים (או זוגות מזהים) לטיפול מיוחד, כאשר כל אחד מהם מופרד על ידי אחד מהם
פסיק או רווח לבן (במקרה כזה יש להציב את הרשימה במירכאות כדי לשמור על הרשימה כולה)
רשימה כארגומנט שורת פקודה אחד). מרובים -I ייתכן שיסופקו אפשרויות. כדי לנקות
רשימת מזהי ההתעלמות, ספק מקף בודד ("-") עבור רשימת מזהים.
תכונה זו שימושית כאשר נעשה שימוש במאקרו של קדם-מעבד באופן שבו הם
לגרום לבלבול תחבירי עקב נוכחותם. אכן, זוהי הדרך הטובה ביותר
פתרון מספר בעיות הנגרמות עקב נוכחות של מאקרו שובר תחביר
בקבצי המקור (ראה מערותמספר דוגמאות ימחישו נקודה זו.
int foo ARGDECL4(void *, ptr, long int, nbytes)
בדוגמה שלעיל, המאקרו "ARGDECL4" יתפרש בטעות כ-
שם הפונקציה במקום השם הנכון "foo". ציון -I ARGDECL4
מביא להתנהגות נכונה.
/* יוצר מחרוזת גרסת RCS במודול */
MODULE_VERSION("גרסה $: 750 $")
בדוגמה שלמעלה, קריאת המאקרו נראית יותר מדי כמו הגדרת פונקציה
מכיוון שלא אחריו נקודה-פסיק (ואכן, אפשר אפילו שאחריו א
הגדרת משתנה גלובלי שתיראה דומה מאוד לפרמטר פונקציה בסגנון K&R
הצהרה). למעשה, הגדרת פונקציה לכאורה זו עשויה אף לגרום ל-
שאר הקובץ שיש לדלג עליו בעת ניסיון להשלים את ההגדרה.
מפרט -I MODULE_VERSION+ היה מונע בעיה כזו.
דוגמה למחלקה {
// התוכן שלך כאן
};
הדוגמה לעיל משתמשת ב-"CLASS" כמאקרו של קדם-מעבד אשר מתרחב למשהו
שונה עבור כל פלטפורמה. לדוגמה, ניתן להגדיר CLASS כ"מחלקה
__declspec(dllexport)" בפלטפורמות Win32 ופשוט "class" ב-UNIX. בדרך כלל, ה-
היעדר מילת המפתח "class" ב-C++ יגרום לקובץ המקור להיות מוגדר באופן שגוי
מנותח. ניתן לשחזר התנהגות נכונה על ידי ציון -I מחלקה=מחלקה.
-L פילה
קרא מתוך פילה רשימה של שמות קבצים עבורם יש ליצור תגיות. אם פילה is
אם שמות הקבצים נקראים כ-"-", שמות הקבצים נקראים מהקלט הסטנדרטי.
אפשרות זו מעובדת לפי שמות הקבצים המופיעים בשורת הפקודה.
מתקבלים גם בקלט זה. אם אפשרות זו צוינה יותר מפעם אחת, רק ה-
האחרון יחול. הערה: פילה נקרא במצב כיוון שורה, כאשר שורה חדשה היא
רק מפריד ורווח לבן שאינו נגרר נחשבים משמעותיים, על מנת ש
ייתכן שיסופקו שמות קבצים המכילים רווחים (עם זאת, רווח לבן נגמר
מוסר משורות); זה יכול להשפיע על אופן ניתוח האפשרויות אם הן כלולות ב-
קֶלֶט.
-n שווה ערך ל --excmd=מספר.
-N שווה ערך ל --excmd=דפוס.
-o Tagfile
שווה ערך ל -f Tagfile.
-R שווה ערך ל --שחזור.
-u שווה ערך ל --סוג=לא (כלומר "לא ממוין").
-V שווה ערך ל --מִלוּלִי.
-w אפשרות זו מתעלמת בשקט לצורך תאימות לאחור עם ctags של SVR4.
יוניקס.
-x הדפס קובץ הפניה צולבת טבלאי קריא (xref) לפלט סטנדרטי
במקום ליצור קובץ תגיות. המידע הכלול בפלט כולל:
שם התגית; סוג התגית; מספר השורה, שם הקובץ ושורת המקור (עם
שטח לבן נוסף (דחוס) של הקובץ המגדיר את התג. אין קובץ תג
נכתב וכל האפשרויות המשפיעות על פלט קובץ התגיות יתעלמו. דוגמה
יישומים עבור תכונה זו יוצרים רשימה של כל הפונקציות הממוקמות ב-
קובץ המקור (לדוגמה ctags -x --c-סוגים=f פילה), או יצירת רשימה של כל הגורמים החיצוניים
משתנים גלובליים גלויים הממוקמים בקובץ מקור (לדוגמה ctags -x --c-סוגים=v
--היקף-קבצים=לא פילהאפשרות זו חייבת להופיע לפני שם הקובץ הראשון.
--לְצַרֵף[=כן|לא]
מציין האם יש לצרף תגיות שנוצרו מהקבצים שצוינו לאלה
כבר קיימים בקובץ התגיות או צריכים להחליף אותם. אפשרות זו כבויה על ידי
ברירת מחדל. אפשרות זו חייבת להופיע לפני שם הקובץ הראשון.
--etags-include=פילה
כלול הפניה ל פילה בקובץ התגיות. ניתן לציין אפשרות זו כמספר רב של
פעמים כרצונך. זה תומך ביכולת של Emacs להשתמש בקובץ תגיות ש"כולל"
קבצי תגיות אחרים. [זמין רק במצב etags]
--לא לכלול=[דפוס]
להוסיף דפוס לרשימה של קבצים וספריות שלא נכללו. ניתן לציין אפשרות זו
כמה פעמים שירצו. עבור כל שם קובץ שנחשב על ידי ctags, כל אחד דפוס
שצוין באמצעות אפשרות זו יושווה הן לנתיב המלא (לדוגמה
some/path/base.ext) ושם הבסיס (למשל base.ext) של הקובץ, ובכך מאפשר
תבניות התואמות לשם קובץ נתון ללא קשר לנתיב שלו, או תואמות רק ל-
נתיב ספציפי. אם תמיכה מתאימה זמינה מספריית זמן הריצה של מערכת ה-C שלך
מהדר, לאחר מכן דפוס עשוי להכיל את תווים כלליים רגילים של shell (לא רגילים)
ביטויים) נפוצים ביוניקס (יש לוודא שציטוט פרמטר האופציה מתבצע כדי להגן על
תווים כלליים (wildcards) מלהיות מורחבים על ידי המעטפת לפני שהם מועברים אל ctags; גם להיות
מודעים לכך שתווים כלליים יכולים להתאים לתו הלוכסן, '/'). ניתן לקבוע אם הקליפה
תווים כלליים זמינים בפלטפורמה שלך על ידי בחינת הפלט של ה- --גִרְסָה
אפשרות, שתכלול "+תווים כלליים" ברשימת התכונות המהורכבת; אחרת,
דפוס מושווה לשמות קבצים באמצעות השוואה טקסטואלית פשוטה.
If דפוס מתחיל בתו '@', לאחר מכן שאר המחרוזת מתפרשת
כשם קובץ שממנו ניתן לקרוא דפוסי אי הכללה, אחד בכל שורה. אם דפוס is
ריק, רשימת התבניות שלא נכללו נמחקת. שים לב שבעת הפעלת התוכנית, ה-
רשימת אי הכללה המוגדרת כברירת מחדל מכילה את השמות "EIFGEN", "SCCS", "RCS" ו-"CVS", שהם שמות של
ספריות שעבורן בדרך כלל לא רצוי לרדת בזמן עיבוד
--שחזור אוֹפְּצִיָה.
--excmd=סוג
קובע את סוג פקודת EX המשמשת לאיתור תגיות בקובץ המקור. [התעלם]
במצב etags]
הערכים התקפים עבור סוג (מתקבלות המילה כולה או האות הראשונה)
הם:
מספר השתמשו רק במספרי שורות בקובץ התגיות לאיתור תגיות. יש לכך ארבעה
יתרונות:
1. מקטין משמעותית את גודל קובץ התגיות שנוצר.
2. מבטל כשלים במציאת תגים מכיוון שהשורה המגדירה את התג מכילה
השתנה, מה שגרם לכישלון בהתאמת התבנית (שימו לב שחלק מהעורכים, כגון
as מֶרֶץ, מסוגלים להתאושש במקרים רבים כאלה).
3. מבטל מציאת שורות מקור זהות ותואמות, אך שגויות (ראה
באגיםלהלן).
4. שומר ערכים נפרדים בקובץ התגיות עבור שורות זהות
בתוכן. ב דפוס מצב, ערכים כפולים נמחקים מכיוון ש-
דפוסי החיפוש שהם יוצרים זהים, מה שהופך את הכפילות
רשומות חסרות תועלת.
עם זאת, לאפשרות זו יש חיסרון משמעותי אחד: שינויים במקור
קבצים עלולים לגרום לכך שמספרי השורות המוקלטים בקובץ התגיות לא יהיו עוד
תואמים לשורות בקובץ המקור, מה שגורם לקפיצות לתגיות מסוימות
מחטיא את הגדרת היעד בשורה אחת או יותר. בעיקרון, אפשרות זו היא
מומלץ להשתמש בו כאשר קוד המקור עליו הוא מוחל אינו כפוף ל
שינוי. בחירת סוג אפשרות זה גורמת לאפשרויות הבאות להיעשות
התעלם: -BF.
דפוס השתמש רק בתבניות חיפוש עבור כל התגים, ולא במספרי השורות שבדרך כלל
משמש להגדרות מאקרו. יתרון זה הוא שאין הפניה
מספרי שורות מיושנים כאשר שורות נוספו או הוסרו מאז התגית
נוצר קובץ.
מעורב במצב זה, בדרך כלל משתמשים בתבניות, למעט כמה יוצאים מן הכלל. עבור C, קו
מספרים משמשים לתגיות הגדרת מאקרו. זה היה פורמט ברירת המחדל
נוצר על ידי המקור ctags ולכן נשמר כברירת מחדל
עבור אפשרות זו. עבור Fortran, מספרי שורות משמשים עבור בלוקים משותפים
מכיוון שקווי המקור המתאימים להם זהים בדרך כלל, מה שהופך
חיפושי תבניות חסרי תועלת למציאת כל ההתאמות.
--תוֹסֶפֶת=דגלים
מציין האם לכלול ערכי תגיות נוספים עבור סוגים מסוימים של מידע.
פרמטר דגלים היא קבוצה של דגלים בני אות אחת, שכל אחד מהם מייצג סוג אחד של תג נוסף
ערך שיש לכלול בקובץ התגיות. אם דגלים לפניו מופיעים הסימנים '+' או '-'
תו, ההשפעה של כל דגל מתווספת או מוסרת מאלה שכבר
מופעל; אחרת הדגלים מחליפים את כל ההגדרות הנוכחיות. המשמעות של כל דגל
הוא כדלקמן:
f כלול ערך עבור שם קובץ הבסיס של כל קובץ מקור (לדוגמה
"example.c"), אשר פונה לשורה הראשונה של הקובץ.
q כלול ערך תג נוסף המותאם למחלקה עבור כל תג שהוא חבר ב-
מחלקה (עבור שפות שעבורן מידע זה מופק; כיום C++,
אייפל וג'אווה). הצורה בפועל של התג המוסמך תלויה ב-
השפה שממנה נגזר התג (תוך שימוש בצורה הטבעית ביותר עבור
כיצד קריאות מוסמכות מוגדרות בשפה). עבור C++, זה בצורה
"class::member"; עבור אייפל וג'אווה, זה בצורה "class.member". זה
עשוי לאפשר איתור קל יותר של תגים ספציפיים כאשר תגים מופיעים מספר פעמים
שם התג מופיע בקובץ התג. עם זאת, שימו לב שזה עלול להיות
יותר מפי שניים מגודל קובץ התגיות.
--שדות=דגלים
מציין את שדות ההרחבה הזמינים שיש לכלול בערכים של
קובץ התגיות (ראה תָג קובץ פורמט(להלן, למידע נוסף). הפרמטר דגלים
היא קבוצה של דגלים בני אות אחת, שכל אחד מהם מייצג סוג אחד של שדה הרחבה ל
include, עם המשמעויות הבאות (מושבת כברירת מחדל אלא אם צוין):
a גישה (או ייצוא) של חברי כיתה
f היקף מוגבל לקבצים [מופעל]
i מידע על ירושה
k סוג של תגית כאות בודדת [מופעל]
K סוג של תגית כשם מלא
l שפת קובץ המקור המכיל את התגית
m מידע על יישום
n מספר שורה של הגדרת תג
s היקף הגדרת התג [מופעל]
S חתימה של שגרה (למשל, אב טיפוס או רשימת פרמטרים)
z כלול את המפתח "kind:" בשדה kind
t סוג ושם של משתנה או typedef כשדה "typeref:" [מופעל]
ניתן להקדים כל אות או קבוצת אותיות עם '+' כדי להוסיף אותה ל...
הגדרת ברירת מחדל, או '-' כדי לא לכלול אותה. בהיעדר סימן '+' או '-' קודם,
רק הסוגים המפורטים במפורש ב דגלים ייכלל בפלט (כלומר
(עוקף את הגדרת ברירת המחדל). אפשרות זו מתעלמת אם האפשרות --פוּרמָט=1 כבר
צוין. ערך ברירת המחדל של אפשרות זו הוא fkst.
--היקף-קבצים[=כן|לא]
מציין האם תגים הוגדרו רק עבור קובץ יחיד (כלומר תגים שלא ניתן לראותם)
מחוץ לקובץ שבו הם מוגדרים, כגון תגיות "סטטיות") צריכים להיות
כלול בפלט. ראה גם את -h אוֹפְּצִיָה. אפשרות זו מופעלת כברירת מחדל.
--לְסַנֵן[=כן|לא]
סיבות ctags להתנהג כמסנן, לקרוא שמות קבצי מקור מקלט סטנדרטי ו
מדפיסים את התגים שלהם לפלט סטנדרטי על בסיס קובץ אחר קובץ. אם --מְמוּיָן is
כאשר מופעלים, תגיות ממוינות רק בתוך קובץ המקור שבו הן מוגדרות.
שמות נקראים מקלט סטנדרטי במצב קלט מכוון שורה (ראה הערה עבור -L
אפשרות) ורק לאחר שמות קבצים המופיעים בשורת הפקודה או מכל קובץ אחר
מסופק באמצעות ה- -L אפשרות. כאשר אפשרות זו מופעלת, האפשרויות -f, -o, ו
--סך הכל מתעלמים מהם. אפשרות זו די אזוטרית ומושבתת כברירת מחדל. זה
האפשרות חייבת להופיע לפני שם הקובץ הראשון.
--מסנן-טרמינטור=מחרוזת
מציין מחרוזת להדפסה לפלט סטנדרטי לאחר התגים עבור כל שם קובץ
מנותח כאשר ה- --לְסַנֵן האפשרות מופעלת. פעולה זו עשויה לאפשר קריאה של אפליקציה
הפלט של ctags כדי לקבוע מתי הפלט עבור כל קובץ מסתיים. שימו לב ש
אם שם הקובץ שנקרא הוא ספרייה ו --שחזור מופעל, מחרוזת זו תהיה
מודפס פעם אחת בלבד בסוף כל התגים שנמצאו על ידי ירידה בספרייה. זה
המחרוזת תמיד תופרד משורת התגית האחרונה של הקובץ על ידי
סיום שורה חדשה. אפשרות זו די אזוטרית וריקה כברירת מחדל. זה
האפשרות חייבת להופיע לפני שם הקובץ הראשון.
--פוּרמָט=רָמָה
שנה את הפורמט של קובץ תג הפלט. נכון לעכשיו, הערכים התקפים היחידים עבור רָמָה
יש לו 1 or 2רמה 1 מציינת את פורמט קובץ התגיות המקורי ורמה 2 מציינת א
פורמט מורחב חדש המכיל שדות הרחבה (אך באופן ששומר על
תאימות לאחור עם המקור vi(1) יישומים). רמת ברירת המחדל היא 2.
אפשרות זו חייבת להופיע לפני שם הקובץ הראשון. [התעלמות ממנה במצב etags]
- עזרה
מדפיס לפלט סטנדרטי תיאור שימוש מפורט ולאחר מכן יוצא.
--if0[=כן|לא]
מציין העדפה האם קוד בתוך ענף "#if 0" של קדם-מעבד
יש לבדוק את התנאי עבור תגיות שאינן מאקרו (תגיות מאקרו תמיד כלולים).
מכיוון שמטרת מבנה זה היא להשבית קוד, ערך ברירת המחדל של זה
האפשרות היא לאשימו לב שזה מצביע על העדפה בלבד ואינו מבטיח
דילוג על קוד בתוך ענף "#if 0", מכיוון שאלגוריתם הגיבוי היה בעבר
צור תגיות כאשר תנאי הקדם-מעבד מורכבים מדי, עוקב אחר כל הענפים של
תנאי. אפשרות זו מושבתת כברירת מחדל.
-- -סוגים=סוגים [+|-]
מציין רשימה של סוגי תגיות (או סוגים) ספציפיים לשפה שיש לכלול ב-
קובץ פלט עבור שפה מסוימת, כאשר אינו תלוי רישיות והוא אחד מ
שמות השפות המובנות (ראה את --שפות-רשימה אפשרות לרשימה מלאה).
הפרמטר סוגים היא קבוצה של דגלים בני אות אחת המציינים סוגי תגים
(בפרט לשפה) כדי לכלול או לא לכלול מהפלט. ה-
קבוצות ספציפיות של דגלים המזוהות עבור כל שפה, משמעויותיהם וברירות המחדל שלהם עשויות להיות
להיות רשימה באמצעות ה- --רשימה-סוגים אפשרות. כל אות או קבוצת אותיות עשויות להיות
לפניו של '+' כדי להוסיף אותו לקבוצת ברירת המחדל, או '-' כדי להסיר אותו ממנה. ב
היעדר כל סימן '+' או '-' קודם, רק הסוגים המפורטים במפורש ב
סוגים ייכלל בפלט (כלומר, עקיפת ברירת המחדל עבור הפונקציה שצוינה
שָׂפָה).
כדוגמה לשפת C, על מנת להוסיף אבות טיפוס ומשתנים חיצוניים
הצהרות לקבוצת סוגי התגים המוגדרת כברירת מחדל, אך לא לכלול פקודות מאקרו, השתמשו
--c-סוגים=+px-dכדי לכלול רק תגיות עבור פונקציות, השתמשו ב- --c-סוגים=f.
--langdef=שם
מגדיר שפה חדשה המוגדרת על ידי המשתמש, שם, לניתוח באמצעות ביטויים רגולריים.
לאחר הגדרתו, שם עשוי לשמש באפשרויות אחרות הנוטלות שמות שפות. האופייני
השימוש באפשרות זו הוא תחילה להגדיר את השפה, ולאחר מכן למפות אליה שמות קבצים באמצעות
--langmap, לאחר מכן ציין ביטויים רגולריים באמצעות --regex- כדי להגדיר כיצד זה
נמצאו תגיות.
--langmap=מפה[,מפה[...]]
שולט באופן שבו שמות קבצים ממופים לשפות (ראה את --רשימת-מפות אפשרות). כל אחת
מופרד באמצעות פסיקים מַפָּה מורכב משם השפה (שם מובנה או מוגדר על ידי המשתמש)
שפה), נקודתיים ורשימה של סיומות קבצים ו/או תבניות שמות קבצים. קובץ
סיומת מצוינת על ידי הוספת נקודה לפני הסיומת (לדוגמה ".c"). קובץ
תבנית השם מצוינת על ידי סגירת התבנית בסוגריים (לדוגמה
"([Mm]akefile)"). אם קיימת תמיכה מתאימה מספריית זמן הריצה של
מהדר ה-C שלך, אז תבנית שם הקובץ עשויה להכיל את תווים כלליים (wildcards) הרגילים של המעטפת
נפוץ ביוניקס (יש לוודא שמצטטים את פרמטר האופציה כדי להגן על תווים כלליים מפני
מורחבת על ידי הקליפה לפני שהיא מועברת אל ctags). ניתן לקבוע אם הקליפה
תווים כלליים זמינים בפלטפורמה שלך על ידי בחינת הפלט של ה- --גִרְסָה
אפשרות, שתכלול "+תווים כלליים" ברשימת התכונות המהורכבת; אחרת, ה-
דפוסי שמות קבצים מותאמים לשמות קבצים באמצעות השוואה טקסטואלית פשוטה.
בעת מיפוי סיומת קובץ, המיפוי שלה יבוטל תחילה מכל שפה אחרת.
אם התו הראשון במפה הוא סימן פלוס, אז הסיומות ושם הקובץ
תבניות במפה זו יתווספו למפה הנוכחית עבור אותה שפה;
אחרת, המפה תחליף את המפה הנוכחית. לדוגמה, כדי לציין שרק
קבצים עם הסיומות .c ו- .x ייחשבו כקבצי שפת C, השתמשו
"--langmap=c:.cx"; כדי להוסיף גם קבצים עם סיומת .j כקבצי שפת ג'אווה,
לפרט "--langmap=c:.cx,java:+.j". כדי למפות makefiles (למשל קבצים בשם אחד מהם
"Makefile", "makefile", או בעל הסיומת ".mak") לשפה בשם "make",
לפרט "--langmap=make:([Mm]קובץ ake).mak". כדי למפות קבצים ללא סיומת,
לציין נקודה שאינה כוללת תו שאינו נקודה (לדוגמה ".", "..x", ".x."). כדי
נקה את המיפוי עבור שפה מסוימת (ובכך מנע יצירה אוטומטית של
תגיות עבור שפה זו), ציין רשימת הרחבות ריקה (לדוגמה
"--langmap=פורטרן:"). כדי לשחזר את מיפויי השפה המוגדרים כברירת מחדל עבור כל פונקציה מסוימת
שפה, ספק את מילת המפתח "default" עבור המיפוי. כדי לציין שחזור
מיפויי שפות ברירת מחדל עבור כל השפות, ציין "--langmap=ברירת מחדל". שימו לב ש
סיומות קבצים נבדקות לפני דפוסי שמות קבצים בעת הסקת השפה של
קובץ.
--כוח-שפה=שפה
כברירת מחדל, ctags בוחר אוטומטית את שפת קובץ המקור, תוך התעלמות מאלה
קבצים שלא ניתן לקבוע את שפתם (ראה מקור קבצים, למעלה). אפשרות זו
מאלץ את הפעולה שצוינה שפה (לא תלוי רישיות; מובנה או מוגדר על ידי המשתמש) ל
ישמש עבור כל קובץ שסופק במקום לבחור אוטומטית את השפה המבוססת על
עם הארכתו. בנוסף, הערך המיוחד המכונית מצביע על כך שהשפה
אמור להיבחר באופן אוטומטי (מה שבפועל מבטל אפשרות זו).
--שפות=רשימה [+|-]
מציין את השפות שעבורן יצירת תגים מופעלת, עם רשימה המכיל a
רשימה מופרדת בפסיקים של שמות שפות (לא תלוית רישיות; מובנית או בשימוש המשתמש)
מוגדרת). אם השפה הראשונה של רשימה לא מופיע לפניו '+' או '-',
הרשימה הנוכחית תימחק לפני הוספה או הסרה של השפות ב רשימהעד ש...
אם נתקלים ב-'-', כל שפה ברשימה תתווסף לרשימה הנוכחית.
אם הסימן '+' או '-' מופיע ברשימה, השפות שאחריהן הן
נוסף או הוסר מהרשימה הנוכחית, בהתאמה. כך הופך להיות פשוט ל
להחליף את הרשימה הנוכחית ברשימה חדשה, או להוסיף או להסיר שפות ממנה
הרשימה הנוכחית. רשימת הקבצים בפועל עבורם ייווצרו תגיות תלויה ב
מיפוי הרחבת השפה בתוקף (ראה את --langmap אפשרות). שימו לב שכל
שפות, כולל שפות המוגדרות על ידי המשתמש, מופעלות אלא אם כן הן מושבתות במפורש
באמצעות אפשרות זו. שמות שפות הכלולים ב רשימה יכולה להיות כל שפה מובנית או
אחד שהוגדר קודם לכן עם --langdefברירת המחדל היא "הכל", שגם היא מקובלת
כטיעון תקף. ראה את --שפות-רשימה אפשרות לרשימה מלאה של
שמות שפות מובנים.
--רישיון
מדפיס סיכום של רישיון התוכנה לפלט סטנדרטי ולאחר מכן יוצא.
--קו-הנחיות[=כן|לא]
מציין האם יש לזהות הנחיות "#line". אלה קיימות ב-
פלט של מעבדי קדם ומכילים את מספר השורה, ואולי גם את שם הקובץ, של
קובץ/קבצי המקור המקוריים שמהם נוצר קובץ הפלט של קדם-המעבד.
כאשר אפשרות זו מופעלת, היא תגרום ctags כדי ליצור ערכי תגיות המסומנים ב-
שמות קבצים ומספרי שורות של מיקומם קובץ/קבצי המקור המקוריים, במקום
מיקומם בפועל בפלט של קדם-המעבד. שמות הקבצים בפועל הממוקמים בתוך
לקובץ התגיות יהיו אותם רכיבי נתיב מובילים כמו פלט הקדם-מעבד
קובץ, מכיוון שמניחים שקבצי המקור המקוריים ממוקמים יחסית ל-
קובץ פלט של קדם-מעבד (אלא אם כן, כמובן, הוראת #line מציינת
(נתיב מוחלט). אפשרות זו כבויה כברירת מחדל. הערה: אפשרות זו היא בדרך כלל רק
שימושי כאשר משתמשים בו יחד עם --excmd=מספר (-n) אפשרות. כמו כן, ייתכן שתצטרך
השתמש ב- --langmap or --כוח-שפה אפשרות אם הארכת ה-
קובץ הפלט של קדם-המעבד אינו ידוע ל ctags.
--קישורים[=כן|לא]
מציין האם יש לעקוב אחר קישורים סמליים (אם נתמכים). כאשר מושבת,
קישורים סמליים אינם מותקנים. אפשרות זו מופעלת כברירת מחדל.
--רשימה-סוגים[=שפה|את כל]
מפרט את סוגי התגים המזוהים עבור השפה שצוינה או עבור כל השפות,
ולאחר מכן יוצא. כל סוג תגית המוקלטת בקובץ התגים מיוצגת על ידי תגית אחת-
דגל אותיות, המשמש גם לסינון התגים הממוקמים בפלט באמצעות שימוש
של -- -סוגים אפשרות. שים לב שחלק מהשפות ו/או סוגי התגים עשויים להיות
מיושם באמצעות ביטויים רגולריים וייתכן שלא יהיה זמין אם קיימת תמיכה בביטויים רגולריים
לא הוקם לתוך ctags (ראה --regex- כל סוג המופיע ברשימה מופעל.
אלא אם כן אחריו מופיע "[כבוי]".
--רשימת-מפות[=שפה|את כל]
מפרט את סיומות הקבצים ותבניות שם הקבצים המקשרות שם קובץ עם
שפה עבור השפה שצוינה או עבור כל השפות, ולאחר מכן נסגר. ראה את
--langmap אפשרות ו מקור קבציםמעל.
--שפות-רשימה
מפרט את שמות השפות המובנות על ידי ctags, ולאחר מכן יוצא. שפות אלה
שמות אינם תלויי רישיות וייתכן שייעשה בהם שימוש --כוח-שפה, --שפות,
-- -סוגים, ו --regex- אפשרויות.
--אפשרויות=פילה
קרא אפשרויות נוספות מ פילההקובץ צריך להכיל אפשרות אחת בכל שורה. כ-
מקרה מיוחד, אם --אפשרויות=אף לא אחד מצוין כאפשרות הראשונה בשורת הפקודה,
זה יבטל את הקריאה האוטומטית של כל אפשרויות התצורה מקובץ
או הסביבה (ראה קבצים).
--שחזור[=כן|לא]
חזרה לספריות שנתקלת בהן ברשימת הקבצים שסופקו. אם רשימת ה
הקבצים שסופקו ריקים ולא צוינה רשימת קבצים עם -L אפשרות ולאחר מכן את
מניחים שמדובר בספרייה הנוכחית (כלומר "."). קישורים סמליים יבוצעו. אם לא תעשה זאת
כמו התנהגויות אלה, או לציין במפורש את הקבצים או להעביר את הפלט של
למצוא(1) לתוך ctags -ל- במקום. הערה: אפשרות זו אינה נתמכת בכל הפלטפורמות
כרגע. זה זמין אם הפלט של - עזרה האפשרות כוללת אפשרות זו.
ראה גם את ה --לא לכלול כדי להגביל את הרקורסיה.
--regex-=/regexp/replacement/[kind-spec/][flags]
השמיים /regexp/replacement/ זוג מגדיר תבנית החלפה של ביטוי רגולרי,
דומה בסגנון ל צמא פקודות החלפה, שבעזרתן ניתן ליצור תגים מ
קבצי מקור הממופים לשפה בעלת השם, , (לא תלוי רישיות; או מובנה-
(ב או בשפה המוגדרת על ידי המשתמש). הביטוי הרגולרי, regexp, מגדיר מורחב
ביטוי רגולרי (בערך זה המשמש את egrep(1)), המשמש לאיתור יחיד
שורת מקור המכילה תגית ויכולה לציין תווי טאב באמצעות \t. כאשר תואם
כאשר נמצא שורה, ייווצר תג עבור השם המוגדר על ידי תַחֲלִיף, אשר
בדרך כלל יכיל את ההפניות האחוריות המיוחדות \1 עד \9 כדי להתייחס להתאמה
קבוצות תת-ביטוי בתוך regexpתווי ההפרדה '/' המוצגים ב
ניתן להחליף את הפרמטר של האפשרות בכל תו. שימו לב ש
כל תו מפריד שייעשה בו שימוש יצטרך להיות מבוטל באמצעות קו נטוי הפוך ('\')
תו בכל מקום בו הוא משמש בפרמטר כמשהו שאינו מפריד.
הביטוי הרגולרי המוגדר על ידי אפשרות זו נוסף לרשימה הנוכחית של ביטויים רגולריים.
ביטויים עבור השפה שצוינה אלא אם כן הפרמטר מושמט, ובמקרה כזה
הרשימה הנוכחית נוקתה.
אלא אם כן שונה על ידי דגלים, regexp מתפרש כ-Posix מורחב רגולרי
ביטוי. ה תַחֲלִיף צריך להתרחב עבור כל השורות התואמות לערך שאינו ריק
מחרוזת תווים, או הודעת אזהרה תדווח. סוג אופציונלי
מפרט עבור התאמת תגים regexp עשוי לעקוב תַחֲלִיף, אשר יקבע מה
סוג התג מדווח בשדה ההרחבה "kind" (ראה תָג קובץ פורמטלהלן).
הצורה המלאה של סוג-מפרט הוא בצורת אות בודדת, פסיק, שם
(ללא רווחים), פסיק, תיאור, ואחריו מפריד, המציינים את
צורות קצרות וארוכות של ערך הסוג ותיאורו הטקסטואלי (מוצג באמצעות
--רשימה-סוגים). ניתן להשמיט את שם הסוג ו/או את התיאור. אם
סוג-מפרט מושמט, ברירת המחדל היא "ביטוי רגולרי". לבסוף, דגלים הם אחד או יותר
תווים בני אות אחת בעלי ההשפעה הבאה על פרשנות
regexp:
b התבנית מתפרשת כביטוי רגולרי בסיסי של Posix.
e התבנית מתפרשת כביטוי רגולרי מורחב של Posix (ברירת מחדל).
i יש להחיל את הביטוי הרגולרי באופן שאינו תלוי רישיות.
שימו לב שאפשרות זו זמינה רק אם ctags נערך עם תמיכה עבור
ביטויים רגולריים, התלויים בפלטפורמה שלך. אתה יכול לקבוע אם התמיכה
עבור ביטויים רגולריים עובר קומפילציה על ידי בחינת הפלט של --גִרְסָה
אפשרות, שתכלול את "+regex" ברשימת התכונות שעברה קומפילציה.
למידע נוסף על ביטויים רגולריים המשמשים את ctags, ראה או את ה
ביטוי רגולרי (5,7) דף המדריך, או תיעוד המידע של GNU עבור ביטויים רגולריים (למשל "info regex").
--סוג[=כן|לא|כיסוי מתקפל]
מציין האם יש למיין את קובץ התגיות לפי שם התגית (ברירת המחדל היא כן).
שימו לב שהמקורי vi(1) תגיות ממוינות נדרשות. ה כיסוי מתקפל ערך מציין מקרה
מיון לא רגיש (או מיון מקופל בגודל רישיות). חיפושים בינאריים מהירים של קבצי תגיות ממוינים עם
קיפול מארזים ידרוש תמיכה מיוחדת מכלים המשתמשים בקבצי תגיות, כגון זה
נמצא בספריית ctags readtags, או ב-Vim גרסה 6.2 ומעלה (תוך שימוש ב-"set"
"ignorecase"). אפשרות זו חייבת להופיע לפני שם הקובץ הראשון. [התעלמות ב-etags
מצב]
--תגית-יחסית[=כן|לא]
מציין כי נתיבי הקבצים הרשומים בקובץ התגיות צריכים להיות יחסיים ל
ספרייה המכילה את קובץ התגיות, ולא יחסית לספרייה הנוכחית,
אלא אם כן הקבצים המסופקים בשורת הפקודה מצוינים עם נתיבים מוחלטים. זה
האפשרות חייבת להופיע לפני שם הקובץ הראשון. ברירת המחדל היא כן כאשר רץ פנימה
מצב etags (ראה את -e אוֹפְּצִיָה), לא אחרת.
--סך הכל[=כן|לא]
מדפיס סטטיסטיקות על קבצי המקור שנקראו וקובץ התגיות שנכתב במהלך
קריאה נוכחית של ctagsאפשרות זו כבויה כברירת מחדל. אפשרות זו חייבת להופיע
לפני שם הקובץ הראשון.
--מִלוּלִי[=כן|לא]
הפעל מצב מפורט. פעולה זו מדפיסה מידע על עיבוד אפשרויות ותיאור קצר
הודעה המתארת איזו פעולה ננקטת עבור כל קובץ הנבחן על ידי ctags.
בדרך כלל, ctags לא קורא ארגומנטים של שורת הפקודה עד לאחר קריאת האפשרויות
מקבצי התצורה (ראה קבצים, למטה) ואת ה- CTAGS משתנה הסביבה.
עם זאת, אם אפשרות זו היא הארגומנט הראשון בשורת הפקודה, היא תצטרך
השפעה לפני קריאת אפשרויות כלשהן ממקורות אלה. ברירת המחדל היא לא.
--גִרְסָה
מדפיס מזהה גרסה עבור ctags לפלט סטנדרטי, ולאחר מכן יוצא. זהו
מובטח שתמיד יכיל את המחרוזת "Exuberant Ctags".
מִבצָעִי פרטים
As ctags בוחן כל שם קובץ בתורו, הוא מנסה לקבוע את שפת הקובץ
על ידי יישום שלושת המבחנים הבאים לפי הסדר: אם סיומת הקובץ מופתה ל-
שפה, אם שם הקובץ תואם לתבנית מעטפת הממופה לשפה, ולבסוף אם
הקובץ ניתן להרצה והשורה הראשונה שלו מציינת מפרש המשתמש בסגנון יוניקס
מפרט "#!" (אם נתמך בפלטפורמה). אם זוהתה שפה, הקובץ
נפתח ולאחר מכן מנתח השפה המתאים נקרא לפעול על הקוד הנוכחי
קובץ פתוח. המנתח מנתח את הקובץ ומוסיף ערך לקובץ התגיות עבור כל אחד מהם.
אובייקט שפה שהוא נכתב לטפל בו. ראה תָג קובץ פורמט, להלן, לפרטים על אלה
ערכים.
יישום זה של ctags לא כופה דרישות עיצוב על קוד C כמו קוד מדור קודם
יישומים. יישומים ישנים יותר של ctags נטו להסתמך על עיצוב מסוים
הנחות על מנת לסייע לו לפתור דילמות קידוד הנגרמות על ידי קדם-מעבד
תנאים.
באופן כללי, ctags מנסה להיות חכם לגבי הנחיות קדם-מעבד מותנות. אם א
נתקל בתנאי preprocessor בתוך משפט שמגדיר תג, ctags
עוקב רק אחר הענף הראשון של אותו תנאי (למעט במקרה המיוחד של "#if 0",
במקרה כזה הוא עוקב רק אחר הענף האחרון). הסיבה לכך היא שאי-הפעולה
מעקב אחר ענף אחד בלבד יכול לגרום לתחביר דו משמעי, כמו בדוגמה הבאה:
#ifdef שתי חלופות
struct {
#else
איחוד
#endif
קצר א;
ארוך ב;
}
לא ניתן לעקוב אחר שני הענפים, או שהגשרים יוצאים מאיזון ctags לא יהיה מסוגל
להבין את התחביר.
אם יישום היוריסטיקה זו אינו מצליח לנתח קובץ כראוי, בדרך כלל עקב
זיווג מסובך ולא עקבי בתוך התנאים, ctags אנסה שוב את הקובץ
שימוש בהיוריסטיקה שונה שאינה עוקבת באופן סלקטיבי אחר מעבד מקדים מותנה
מסתעף, אך במקום זאת חוזר להסתמך על סוגר מסוגר ("}") בעמודה 1 כ
המציין את סוף הבלוק לאחר שאיזון כלשהו בסוגריים נובע ממעקב אחר #if
ענף מותנה.
תגיות ינסה גם לטפל באופן ספציפי ברשימות ארגומנטים המוקפות בקבוצות כפולות של
סוגריים על מנת לקבל את המבנה המותנה הבא:
חיצוני חלל foo __ARGS((int אחד, char שניים));
כל שם שמגיע מיד לפני הסימן "((" יתעלם אוטומטית והקודם
ייעשה שימוש בשם.
הגדרות אופרטורים ב-C++ מטופלות באופן מיוחד. על מנת להבטיח עקביות עם כל סוגי
אופרטורים (עמוסים והמרה), שם האופרטור בקובץ התגיות תמיד יהיה
שקודם על ידי המחרוזת "אופרטור" (כלומר, גם אם הגדרת האופרטור בפועל הייתה
נכתב כ-"אופרטור<<").
לאחר יצירה או הוספה לקובץ התגיות, הוא ממוין לפי שם התגית, תוך הסרת
שורות תגיות זהות.
תָג קובץ פורמט
כאשר לא פועל במצב etags, כל ערך בקובץ התגיות מורכב משורה נפרדת,
כל אחד נראה כך במקרה הכללי ביותר:
שם_תגית שם_הקובץ ex_cmd;" שדות_הרחבה
השדות והמפרידים של שורות אלה מפורטים כדלקמן:
1. שם התגית
2. תו טאב יחיד
3. שם הקובץ שבו נמצא האובייקט המשויך לתג
4. תו טאב יחיד
5. פקודת EX המשמשת לאיתור התגית בתוך הקובץ; בדרך כלל תבנית חיפוש
(או /pattern/ או ?pattern?) או מספר שורה (ראה --excmdפורמט קובץ תג 2.
(ראה --פוּרמָט) מרחיב את פקודת EX זו בנסיבות מסוימות כך שתכלול א
קבוצת שדות הרחבה (המתוארים להלן) מוטמעים באופן מיידי בתגובה של EX
נוסף לפקודת EX, מה שמשאיר אותה תואמת לאחור עם הקובץ המקורי
vi(1) יישומים.
מספר תגיות מיוחדות נכתבות בקובץ התגיות למטרות פנימיות. תגיות אלו הן
מורכבים בצורה כזו שהם תמיד ממוינים לראש הקובץ. לכן, הראשון
שני תווים של תגיות אלה משמשים כמספר קסם לזיהוי קובץ תגיות למטרות
קביעה האם קובץ תגיות תקין מוחלף ולא קובץ מקור.
שים לב ששמו של כל קובץ מקור יירשם בקובץ התגיות בדיוק כפי שהוא
מופיע בשורת הפקודה. לכן, אם הנתיב שציינת בשורת הפקודה היה
יחסית לספרייה הנוכחית, אז זה יירשם באותו אופן בתגית
קובץ. ראה, עם זאת, את --תגית-יחסית אפשרות כיצד ניתן לשנות התנהגות זו.
שדות סיומת הם זוגות מפתח-ערך מופרדים בטאבים המצורפים לסוף פקודת EX
כהערה, כמתואר לעיל. זוגות ערכי מפתח אלה מופיעים בצורה הכללית
"מפתח:ערך". נוכחותם בשורות קובץ התגיות נשלטת על ידי --שדות
אפשרות. המפתחות האפשריים ומשמעות הערכים שלהם הם כדלקמן:
גישה מציין את הנראות של חבר מחלקה זה, כאשר ערך ספציפי ל-
שפה.
פילה מציין שלתג יש נראות מוגבלת לקובץ. למפתח זה אין
ערך מקביל.
סוג מציין את סוג התג, או את הסוג שלו. ערכו הוא אחד מהבאים
דגלים בני אות אחת תואמים המתוארים תחת הקטגוריות השונות -- -סוגים
האפשרויות לעיל, או שם מלא. זה מותר (ולמעשה, זוהי ברירת המחדל)
כדי להשמיט את חלק המפתח של שדה זה. ההתנהגויות האופציונליות הן
נשלט עם --שדות אוֹפְּצִיָה.
הפעלה
כאשר קיים, הדבר מצביע על יישום מוגבל (אבסטרקטי לעומת קונקרטי)
של שגרה או שיעור, שבו ערך ספציפי לשפה ("וירטואלית" או
"וירטואלי טהור" עבור ++C; "אבסטרקטי" עבור Java).
יורש כאשר נוכח, ערך. היא רשימה מופרדת בפסיקים של מחלקות שמהן זה
המחלקה נגזרת (כלומר יורשת מ).
חֲתִימָה כאשר נוכח, ערך הוא ייצוג תלוי-שפה של החתימה של
שגרה. חתימת שגרה בצורתה המלאה מציינת את סוג ההחזרה
של שגרה ורשימת הארגומנטים הפורמלית שלה. שדה הרחבה זה נמצא כעת
נתמך רק עבור שפות מבוססות C ואינו כולל את סוג ההחזרה.
בנוסף, מידע על היקף הגדרת התג עשוי להיות זמין, עם המפתח
חלק שווה לשם מבנה תלוי-שפה כלשהו וערכה השם המוצהר
עבור מבנה זה בתוכנית. ערך היקף זה מציין את ההיקף שבו התג
נמצא. לדוגמה, תג שנוצר עבור איבר מבנה C יהיה בעל טווח
נראה כמו "struct:myStruct".
איך ל להשתמש עִם VI
כברירת מחדל, Vi יצפה לקובץ תגיות בשם "tags" בספרייה הנוכחית. לאחר
לאחר בניית קובץ התגיות, הפקודות הבאות מפעילות את תכונת אינדוקס התגיות:
vi -t תג הפעילו את vi והציבו את הסמן בקובץ ובשורה שבהם מוגדר "tag".
:ta תג מצא תגית.
Ctrl-] מצא את התגית מתחת לסמן.
Ctrl-T חזרה למיקום הקודם לפני קפיצה לתגית (לא מיושם באופן נרחב).
איך ל להשתמש עִם גנה EMACS
כברירת מחדל, Emacs יצפה לקובץ תגיות בשם "TAGS" בספרייה הנוכחית.
לאחר בניית קובץ התגים, הפקודות הבאות מפעילות את תכונת אינדוקס התגים:
מקס ביקור-תגיות-טבלה קובץ
בחר את קובץ התגית, "FILE", לשימוש.
M-. [תָג]
מצא את ההגדרה הראשונה של TAG. תג ברירת המחדל הוא המזהה שמתחת ל-
הסמן.
מ-* חזור למקום שבו הפעלת קודם לכן "M-.".
Cu M-. מצא את ההגדרה הבאה עבור התגית האחרונה.
לפקודות נוספות, עיינו ב תגים נושא במסמך המידע של Emacs.
איך ל להשתמש עִם נדיט
NEdit גרסה 5.1 ואילך יכולות להתמודד עם פורמט קובץ התגיות המורחב החדש (ראה --פוּרמָט). ל
כדי לגרום ל-NEdit להשתמש בקובץ התגיות, בחר "קובץ->טען קובץ תגים". כדי לקפוץ להגדרה עבור
תגית, סמנו את המילה ולאחר מכן לחצו Ctrl-D. NEdit 5.1 יכול לקרוא קבצי תגיות מרובים
מספריות שונות. הגדרת המשאב X nedit.tagFile לשם של תגית
הקובץ מורה ל-NEdit לטעון אוטומטית את קובץ התגיות בזמן ההפעלה.
מערות
כי ctags אינו מעבד מקדים וגם לא מהדר, שימוש במאקרו של מעבד מקדים יכול
לרמות ctags לתגיות חסרות או ליצירה שגויה של תגיות לא מתאימות. למרות זאת
ctags תוכנן לטפל במקרים נפוצים מסוימים, זוהי הסיבה העיקרית
של בעיות שדווחו. בפרט, השימוש במבני קדם-מעבד אשר משנים את
תחביר טקסטואלי של C יכול להטעות ctagsניתן לעקוף בעיות רבות כאלה באמצעות ה- -I
אוֹפְּצִיָה.
שימו לב שמאז ctags יוצר דפוסים לאיתור תגים (ראה את --excmd אפשרות), זוהי
ייתכן בהחלט שהעורך שלך ימצא שורה שגויה אם קיימת שורה אחרת
שורת המקור הזהה לשורה המכילה את התגית. הדוגמה הבאה
מדגים את המצב הזה:
משתנה int;
/* ... */
void foo (משתנה)
משתנה int;
{
/* ... */
}
תלוי באיזה עורך אתה משתמש ובאיזה מקום בקוד אתה נמצא, זה אפשרי
שתבנית החיפוש עשויה לאתר את הצהרת הפרמטר המקומית ב-foo() לפניה
מוצא את הגדרת המשתנה הגלובלי בפועל, מכיוון שהקווים (ולכן החיפוש שלהם)
(הדפוסים זהים). ניתן להימנע מכך על ידי שימוש ב- --excmd=n אוֹפְּצִיָה.
השתמש ב-ctags-exuberant באופן מקוון באמצעות שירותי onworks.net
