• בלוג
  • פקודות אוטומטיות ב vim

פקודות אוטומטיות ב vim

21/03/2016
vim

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

1. הגדרת פתיח לקובץ באופן אוטומטי

פקודה אוטומטית היא פקודה שמתבצעת באופן אוטומטי כל פעם שמתרחש אירוע מסוים. כך למשל עבור Shell Scripts נרצה להגדיר שבכל יצירה של קובץ עם סיומת sh וים אוטומטית יכתוב בתחילת הקובץ את שורת הפתיח.

אנו כותבים פקודות אוטומטיות בקובץ ~/.vimrc ונהוג לסדר אותן בקבוצות. בתחילת כל קבוצה אנו מוחקים את כל הפקודות האוטומטיות מאותה הקבוצה, כך שגם אם נטען כמה פעמים את קובץ האתחול לעולם לא נקבל יותר ממופע אחד של הפקודה האוטומטית.

הקטע הבא מקובץ vimrc מגדיר פתיח לקבצים לפי סוגים. בקבצי sh ו csh הפתיח הוא בסך הכל שורה בודדת, ואילו בקבצי c אנו לוקחים תבנית מקובץ קיים בשם skel.c ששמור בתיקיית ~/template. השורה אומרת שבכל פעם שנפתח קובץ חדש עם הסיומת c יועתק כל תוכן התבנית לקובץ החדש (בתוך התבנית אפשר לרשום טקסט התחלתי של קבצי c):

augroup shell_au
    au!
    au BufNewFile *.csh silent call append(line(0), "#!/bin/tcsh -f")
    au BufNewFile *.sh silent call append(line(0), "#!/bin/sh")
    au BufNewFile *.c silent :0r ~/template/skel.c
augroup END

2. תיקון אינדנטציה לפני שמירה ובטעינה

תקועים עם מתכנתים עצלנים בצוות שתמיד מכניסים לפרויקט קבצים לא מיושרים? וים יכול לעזור עם תיקוני אינדנטציה ואפילו לעשות זאת באופן אוטומטי. הקטע הבא יישר קבצי רובי בטעינה ולפני שמירה:

augroup indent
    au!
    au BufWritePre,BufRead *.rb :normal gg=G
augroup END

3. טעינה מחדש של קובץ האתחול לאחר שמירה

הקטע הבא יגרום לוים עצמו לטעון מחדש את קובץ ההגדרות vimrc לאחר כל שמירה, כך שלא תצטרכו להפעיל מחדש את העורך אחרי כל שינוי:

augroup reload_vimrc
    autocmd!
    autocmd BufWritePost $MYVIMRC source $MYVIMRC
augroup END

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