מדריך קטן לכתיבת קוד בc במהירות

שגיב ברהום

sagivba_AT_nanamail.co.il

מבוא

יש לי חבר, ליעד, שכשהוא מתכנת, אצבעותיו מדלגות במהירות כמעט בלתי נתפשת ובלי טעויות. עד שלפעמים, אני כמעט רואה עשן כחלחל מיתמר מבין המקשים וריח אוזון קל נישא באוויר.
אני לא כזה – מה לעשות, איך לומר בעדינות, אני מאותגר הקלדה לעומת ליעד. ומה שיותר גרוע, אני גם עצלן , לא אוהב להקליד הרבה, אבל חייב. לכן, חיפשתי כלי שיעזור לי במהלך הלימודים לתכנת במהירות.
לאחר חיפוש קצר ניתקלתי בvim.
במדריך הקצר הזה, אנסה:

  1. לשתף אתכם בכמה טריקים קטנים שעוזרים לי לכתוב קוד בC במהירות (לטובת הלימודים) ותסריטי bash (כי חלק גדול מהטריקים עובד גם שם) בעזרת gvim
  2. להציג לכם שני “אשפים” אשר יכולים לעזור למי שמתכנת מסודר ובונה תוכניות קצרות מלמעלה למטה (ראו נספח א' וניספח ב'.)
  3. נספח א': רשימת קיצורים לשימוש בc.vim

למי מיועד המדריך:

המדריך מיועד למי שרוצה להבין למה כל כך מתלהבים מvim, קרא כבר את המצויין “מבוא ל-VI ע”י אביעד נוטריקה “(1) בפינגווין ויודע לעבוד איתה באופן בסיסי. למי שכותב קטעי קוד בc או בbash ורוצה גם לשמור על תיעוד נאות וגם לחסוך זמן. אני משער לעצמי שסטודנטים/תלמידים שמתכנתים תוכניות קטנות של מספר קבצים יכולים להעזר במדריך הזה במיוחד.

זכויות יוצרים ורשיון

כל הזכויות שמורות © 2007, שגיב ברהום, הרשות ניתנת להעתיק, לשנות ולהפיץ מדריך זה תחת התנאים של רשיון ה-GFDL
Linux הוא סימן מסחרי רשום של Linus Torvalds.

הסרת אחריות

הכותב אינו נושא באחריות עבור שימוש ברעיונות, דוגמאות ומידע שבמדריך. השימוש הוא באחריות הקורא בלבד. המדריך עשוי להחיל טעויות ופרטים לא נכונים, שהשימוש בהם עשוי להיות מזיק למחשבך. למרות הסבירות הנמוכה, הכותב אינו לוקח כל אחריות

משוב

תגובות, תלונות, הערות והארות לכתובת sagivba_AT_nanamail.co.i

למה gvim?

השאלה,אולי, היא למה לא?
ועכשיו ברצינות, יש הרבה עורכי טקסט טובים, למזלי כשהתחלתי להשתמש בלינוקס, היה שם מדריך של עורך הטקסט VI שאמור להופיע כמעט בכל ההפצות ואינו דורש ממשק גרפי כך שהעבודה איתו עוזרת במיוחד במקרים שבהם אין אפשרות לעבוד עם הX.
וקיימים גם גם gvim / vim (קיצור של vi impruved ). התוכנה gvim הוא הגרסה בעלת הממשק הגרפי שך vim. תוכנות אילו קלילות ויש להן גרסא גם לחלונות ולמק, כך שברגע שלמדתם לעבוד איתן תוכלו להשתמש בהן גם במערכות אחרות.
מה גם שאמורה להיות לו אפשרות להשתלב בvisual studio (לא בדקתי – אם יש מישהו ניסה והצליח אשמח אם יודיע לי).

איך להשיג את gvim ?ומה עוד כדאי להוריד בכדי להפיק תועלת מהמדריך הזה.
האתר של vim .
הסקריפטים:
c.vim
bash-support.vim

את השימוש בסקריפטים אציג בהמשך
אני משער שניתן להשיג את gvim גם בעזרת urpmi וכדומה…
טוב אז יש לכם את התוכנה מותקנת עכשיו לעינייננו:

טיפים לתכנות מהיר עם gvim.

עריכה נוחה של טקסט:

השלמת מילים vim יודעת להשלים מילים באופן הבא:

  1. הקשת אותיות ראשונות מהמילה המבוקשת ולחיצה על crtl+n תשלים את המילה למילה הקרובה ביותר בטקסט שמתחת לסמן.
  2. הקשת ctrl+p , מלמעלה

למשל עבור הטקסט הבא הקלדתם c :

Poetry of Lewis Carroll

HOW DOTH THE LITTLE CROCODILE

How doth the little crocodile
  Improve his shining tail,
And pour the waters of the Nile
  On every golden scale!
c <===you typed 'c' here
How cheerfully he seems to grin,
  How neatly spreads his claws,
And welcomes little fishes in
  With gently smiling jaws!"

לחיצה על ctrl+n פעם אחת תוביל להשלמה לcheerfully, לחיצה נוספת, להשלמה לclaws וכן הלאה.

.עבודה במסך מפוצל:

כאשר עלינו לערוך קובץ ארוך, נוח לעיתים לעבוד עם הקובץ במספר מקומות בו זמנית. לשם כך, אני משתמש במסך מפוצל אנכית – אני מכיר שתי דרכים לפצל את המסך: האחת, בעזרת הפקודה ” vs :” והשנייה בעזרת קיצור מקשים ctrl+w ואחריו v. מעבר בין המסכים נעשה בעזרת ctrl+w. בכדי לסיים את השימוש באחד המסכים נשתמש בctrl+w ואחריו q.
בכדי לערוך שני קבצים בו זמנית, למשל, ניתן לפתוח קובץ אחד ואח”כ להשתמש ב:


:vs file2

באופן דומה ניתן להשתמש בפקודה

:sp file

בכדי לחלק אופקית את המסך או בקיצור ctrl+s ןאחריו w.

תנועה מהירה בקוד

מיספור שורות ומעבר לשורה n
כאשר מעוניינים להוסיף מיספור לשורות, ניתן להשתמש בפקודה:

:set number

מעבר לשורה מספר n נעשה ע”י הקשה במצב פקודה על g ואחריו מספר השורה
חיפוש טקסט בקוד והחלפת טקסט אחד בטקסט אחר.
אם אתם עובדים עם גרסת gui הקשת : alt+e ואחריו f לחיפוש או alt+e ואחריו l להחלפה. אפשר גם במצב פקודה : החלפת כל המופעים של pinky בbrain מבלי לבקש אישור.

%s/pinky/brain/g

החלפת כל המופעים של pinky בbrain עם בקשת אישור.

:%s/pinky/brain/gc

שימוש בתגים:

  • מה זה ctags ?

כאשר מתכנתים תוכניות בינוניות לעיתים אנו רוצים תוך כדי כתיבת הקוד להזכר בסדר הפרמטרים שפונקציה מקבלת, או בטיפוס שהיא מחזירה וכו'. לצורך כך נוח להפעיל תוכנית בשם ctags על קבצי המקור שלנו.
זו תוכנית שניתנת להפעלה משורת פקודה שמקבלת כקלט קבצי קוד (במקרה שלנו, זה קוד C אבל היא יודעת לעבוד גם עם שפות אחרות) ומפיקה קובץ של אינדקסים (תגים ) של מקומות חשובים בקוד המקור (כמו למשל הגדרת פונקציות).
כלומר, לאחר הגדרת שם פונציה, אם יקבע בה תג - לחיצה על המקשים [ + ctrl יקפיץ אותנו ישר אל ההגדרה מכל מקום בטקסט.

  • הפעלת הפקודה כך:
ctags file1.c file2.c file1.h

ענתה על כל צרכי עד כה, לפרטים נוספים אתם מוזמנים לקרוא בman או כאן

סקריפטים שניתן להוסיף לgvim המקצרים הקלדת קוד ותיעוד:

c.vim

אחת התכונות המועילות ביותר בgvim היא היכולת להוסיף לו תוספים. התוספים הם סקריפטים שניתן להוסיף לעורך הטקסט אותם אפילו אתם יכולים לכתוב, אבל בד”כ אין צורך בכך - חיפוש באתר של vim ימצא בד”כ כל תכונה שאתם יכולים להעלות עלדעתכם שאתם צריכים בעורך טקסט. אני אציג כעת את אחד הסקריפטים האלא שמצאתי כשימושי במיוחד : c.vim.
אם אתם חושבים שצריך להסביר איך להתקינו מעבר למה שמפורט באתר הוסיפו הודעה לשרשור ואני אכתוב הסבר - חבל לי להעמיס את המדריך בדברים מיותרים, ואני מנסה לברור את השימושיים ביותר מבין הטיפים שגיליתי.
לאחר הוספת הסקריפט נגלה כי נוספה אופציה חדשה בסרגל התפריטים : ++ C/C
הרעיון הוא לאפשר לכתוב קטעי קוד שלמים בעזרת העכבר (מאוד לא יעיל) או בעזרת קיצורי מקשים הנה דוגמא שימושית: נניח וכתבנו:

int arrsize=5;
char *p;
p=malloc(arrsize*(sizeof(*p));
for ( i=0; i<arr; i+=1 )
{
   /*some code that doing somthing with p */
} 

ואנו מעוניינים לבצע בדיקה שהקצאת הזיכרון הצליחה כל מה שצריך לבצע: נסמן את לולאת הfor וכאן מגיע השוס הגדול נלחץ: alt+c a f נגזור את שורת הקצאת הזכרון ונדביק במקום של משפט התנאי (לא לשכוח למחוק את התו ';' ) וקיבלנו קוד נאה שכבר כולל הזחה כראוי: <code> int arrsize=5; char *p;

if (p=malloc(arrsize*(sizeof char)) ) {

 for ( i=0; i<arr; i+=1 )
 {
    /*some code that doing somthing with p */
 }

} </ code>

מדריכים/מדריך_קטן_לכתיבת_קוד_בc_במהירות.txt · שונה לאחרונה ב: 2008/06/19 18:34 (עריכה חיצונית)
chimeric.de = chi`s home Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0