למידת טיפים ותרומות שימושיות של 'Vi/Vim' למתחילים – חלק 1

הצורך ללמוד איך להשתמש בעורכי טקסט ב-Linux הוא לא ניתן לערעור, מאחר וכל מנהל מערכת טומן קובץ הגדרות (טקסט פשוט) בצורה יומית, ולעיתים רבות נעשה זאת באמצעות כלי אחד או יותר מממשק שורת הפקודה (כמו nano, vim, או emacs).

בעוד ש-nano אולי יותר מתאים למשתמשים חדשים, vim או emacs הם הכלי שנבחר על ידי משתמשים מנוסים יותר בשל יכולותיהם המתקדמות.

אך יש עוד סיבה אחת למה ללמוד איך להשתמש באחד מעורכי הטקסט האלו צריך להיות על ראש סדר העדיפויות שלך: יתכן שתתקל בשרת המשתמש רק ב-CLI או תיתקל בבעיה עם מנהל השולחן בשרת או בשולחן העבודה שלך המבוסס על ממשק גרפי ב-Linux והמשאב היחידי לבדיקה ועריכת קבצי ההגדרות הוא שורת הפקודה.

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

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

1. גישה לעזרה באינטרנט ב־Vim

לאחר הפעלת vim, לחץ על F1 או השתמש ב־:h במצב ex כדי להיכנס לעזרה באינטרנט. ניתן לקפוץ לסעיף או נושא ספציפי על ידי שימות הסמן עליו ולאחר מכן ללחוץ על Ctrl+] (Ctrl, אז הסוגרים המרובעים סגורים).

כשתסיים, לחץ על Ctrl+t כדי לחזור למסך הקודם. כפלט אפשר לחפש נושא או פקודה ספציפית עם :h <נושא או פקודה>.

לדוגמה,

:h x 

יציג את העזרה עבור פקודת הx (מחיקה):

Vi Editor Online Help

ולדוגמה אחרת,

:h substitute

יביא את העזרה על פקודת הsubstitute (הטיפ האחרון במאמר זה).

2. הוספת סימניות בעורך Vim

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

נניח שאתה עורך קובץ הגדרות בן 300 מילים ולסיבה מסוימת עליך להחליף באופן חוזרי בין השורות 30 ו־150 לדוגמה.

#30 לך לשורה במספר :30 במצב ex, ואז חזור למצב פקודה ולחץ על ma (m, ואז a) כדי ליצור סימן בשם “a” בשורה 30.

אז לך לשורה 250 (עם :250 במצב ex) ולחץ `a (גרש חוזר, ואז a) כדי לחזור לסימן a בשורה 30.

ניתן להשתמש באותיות קטנות וגדולות כדי לזהות סימנים ב־vim (עכשיו חזור על התהליך כדי ליצור סימן בשם A בשורה #250).

ניתן לראות את הסימנים שלך עם

:marks aA
Marks Usage in Vim Editor

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

3. ניקוי קוד ללא מאמץ ב־Vim

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

ראשית, בחר בבלוק חזותי על ידי שמית הסמן בתחילת הבלוק, ואז לחיצה על Ctrl+v (Ctrl, ואז v).

  • כדי להזיז לשמאל: לחץ על <j
  • כדי להזיז לימין: לחץ על >j

ואז לחץ על הפקודה . (dot) כדי לחזור על הזחה אחת. הבלוק שנבחר יתזוז לימין או לשמאל רק בלחיצה אחת.

אחד מדוגמאות הקלאסיות לשימוש בפקודת dot היא כאשר תרצה למחוק סדרה של מילים: תניח את הסמן על המילה הראשונה שתרצה למחוק, ואז לחץ dw.

כדי להמשיך ולמחוק את המילים הבאות, פשוט לחץ על . (קצר וקל יותר מלחזור על dw פעמים רבות).

4. הוספת תווים יוניקוד ב- Vim

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

כדי לעשות זאת, לחץ על Ctrl+v במצב הכנסה ואז על האות u ועל הקוד הנומרי ההקסדצימלי לתו שתרצה להכניס.

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

לדוגמה,

Ctrl+v followed by returns
u0040 @
u00B5 μ
u20AC

5. שילוב פלט של פקודות חיצוניות ב- Vim

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

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

כדי לעשות זאת, אני משתמש:

:r! pwd 

במצב ex. כתוצאה, תיקיית העבודה הנוכחית מוכנסת.

:!r ip route show | grep default | cut -f 3 -d " "

אם אתה צריך להשתמש בשער ברירת המחדל במקום מסוים בתסריט, תוכל להוסיף אותו בקובץ הנוכחי בלי לצאת מ- vim כך:

6. הוספת תוכן קובץ חיצוני ב- Vim

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

:r /etc/passwd

/etc/passwd:תוכל למצוא את הטיפ הזה שימושי כאשר תצטרך לשנות קבצי התצורה אך תרצה לשמור על המקוריים כדי לחזור להגדרות "מקוריות" ככל שנדרש.

7. חיפוש והחלפה של מילה ב- Vim

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

לאלה שמכירים את sed, זה יזכיר להם – במצב ex, יש להקליד:

:%s/old/new/g

כאשר old הוא התבנית לחיפוש ו- new היא המחרוזת שתחליפה אותה.

במקרה המתואר לעיל, השתמשתי ב-

:%s/Globe/Earth/g

כדי לבצע את המשימה.

ומה עם כך שתרצה לקבל הצעה לפני ביצוע החלפות? פשוט. תוסיף את c בסוף הפקודה הנ"ל, כך:

:%s/old/new/gc

המופעים של התבנית יודגשו ותישאל האם ברצונך להחליפם במחרוזת חדשה:

:%s/gacanepa/me/gc
Search and Replace String in Vim

כאשר

  • y: yes
  • n: no
  • a: substitute all
  • q: quit
  • l: substitute this occurrence and quit
  • ^E (Ctrl+E): לגלול למעלה במסך
  • ^Y (Ctrl+Y): לגלול למטה במסך
סיכום

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

Source:
https://www.tecmint.com/learn-vi-and-vim-editor-tips-and-tricks-in-linux/