איך לצאת מ־Vim (ולמה לא)

#טרוסטורי

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

  • המקלדת לא תגיב כמצופה
  • הקוד יעמוד תלוי באוויר
  • הטרמינל יעלה בלהבות

Vim הוא כמו גשם ביום חתונתכן: הורס לכן את התוכניות, אבל יש גם אנשים שמוקסמים ממנו.

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

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

חשוב לדעת

ב־Vim יש mode הקלדת פקודות ו־mode הקלדת טקסט. למה? אולי משיקולי חיסכון ואלגנטיות, אולי מתוך מחשבה שהזיכרון שלכם לא מוגבל ושאתם רוצים לאחסן בו את כל הפקודות בתבל. ובכלל, מה נסגר עם התופעה הזאת של ממשקי משתמש גרפיים? נראה כמו טרנד הזוי. בטח יפסיקו להשתמש בזה עוד שנתיים. טוב, אני לא יודעת אם מישהו באמת אמר את זה, אבל אני מתארת לעצמי שהיו אנשים שחשבו ככה לפני עלייתם של מסכי הטאץ׳. אבל העולם השתנה. כיום, המפתחת המצויה לא מבינה מה רוצים מהחיים שלה. כולה רצתה לעשות קומיט.

איך לצאת? בקצרה

התשובה הקצרה היא <ESC> :q! <ENTER>

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

אם רוצים לצאת בלי לשמור שינויים, ולא נעשו שינויים, אין צורך בסימן הקריאה:

<ESC> :q <ENTER>

אם רוצים לצאת בלי לשמור שינויים אבל q: לא עובד (כי עשיתם שינויים, בטעות או בכוונה):

<ESC> :q! <ENTER>

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

אז… זהו, אפשר ללכת הביתה.

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

איך לצאת? באריכות

כאמור, יש מצב עריכת טקסט ומצב פקודות, ולמעשה יש גם מצבים אחרים, אבל נקווה שלא תגיעו אליהם בניגוד לרצונכן לעולם. עכשיו, אתן רוצות לעבור מהמצב שבו נתקעתן למצב הקלדת פקודות. רוב הסיכויים שאתן ב־insert mode. אבל אם בטעות נכנסתן ל־mode אחר, כדאי לדעת שבמצבים שונים, וגם בתוכנות טרמינל שונות, צריך ללחוץ Esc מספר שונה של פעמים כדי לעבור למצב הקלדת הפקודות, כי Esc גם יכול להתפרש בחלק מהמצבים כרכיב בקומבינציה של פקודה אחרת, שכנראה לא התכוונתן אליה. בקיצור, בגלל זה אני מציעה ללחוץ Esc איזה 3 פעמים דבר ראשון. שלא ישתמע לשני פנים.

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

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

א. אם אין שינויים, תעבוד לכן הפקודה q. האות q מייצגת את המילה quit.

ב. עשיתן שינויים אבל אין לכן רצון לשמור אותם: הפקודה q לא תעבוד במקרה הזה. אולי חשבתן שלא שיניתן כלום אבל בעצם בטעות לחצתן על משהו. ניסיתן q ולא עבד? נסו את !q (כזכור, לאחר שהקלדתן אסקייפ ונקודתיים). סימן הקריאה מייצג שימוש בכוח ואלימות (force quit). אל תעשו קופי־פייסט מכאן, כי כתבתי את ה־q ואת סימן הקריאה בסדר הפוך משיקולי עימוד עברית–אנגלית. קודם מקלידים את האות, אחר כך את סימן הקריאה.

ג. עשיתן שינויים שאתן כן רוצות לשמור: יש לזה כמה פקודות אפשריות. אחת מהן שקלה לזכירה בקונטקסט הזה היא wq (עוצרת להזכיר: את כל הפקודות האלה מקלידים רק אחרי אסקייפ ונקודתיים). האות w מייצגת את המילה write, כתיבת השינויים אל תוך הקובץ (האמת היא שזה לא כזה אינטואיטיבי: אנחנו מצפים ל־s כשמדובר בשמירה, כי הפנמנו את הקונבנציה save). כזכור, מכיוון שמופיעה לצד ה־w גם האות q, אתן לא רק שומרות אלא גם סוגרות את הקובץ, בפקודה אחת. זה נשמע כמו כלום, אבל אני מדגישה את זה כי רובנו לא רגילים מתוכנות אחרות לחיבור בין הפקודות האלה ואפשר לשכוח או לא לקלוט מה עושים ברגעים לא צפויים. החיבור אמנם יעיל וחסכוני יותר (וזו רק ההתחלה), אבל עלול לבלבל כשלא מיומנים.

לא לשכוח אנטר בסוף, אחרת אתם סתם יושבים שם ומחכים ולא קורה כלום. חשוב להודיע ל־Vim שסיימתם, אחרת איך ידע. (יכול להיות שזה יצא לכם אינסטינקטיבית ממילא).

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

מקור: https://vim.rtorr.com

אתנחתא קומית

מקור: https://github.com/johngrib/vim-game-code-break

איך לקבוע עורך טקסט אחר

דעו שניתן לקבוע אדיטור או IDE חלופי כדיפולטי ל־git. לרוב מדברים על nano, שגם הוא אדיטור שנפתח בטרמינל, רק יותר אינטואיטיבי. אבל אני אומרת בואו נלך עד הסוף, באיזה אדיטור אתם עובדים ביומיום? Sublime Text? אטום? אני כרגע עם VSCode. אין סיבה שלא תוכלו לכתוב הודעת קומיט באדיטור הרגיל שלכם, איפה שהאצבעות שלכם מכירות את השטח. עבור VSCode מקלידים בטרמינל:

git config --global core.editor "code --wait"

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

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

ללמוד להשתמש ב־Vim

נבחן את המימרה הנושנה: Life is too short to learn vim. האמנם נכון הדבר גם בימינו? עם התקדמות הרפואה המודרנית תוחלת החיים עולה, ולחלקנו מצפה אפוא אריכות ימים חסרת תקדים. מאוד משכנע, אני יודעת. אבל ברצינות, למה שתהיו מעוניינות ללמוד להשתמש ב־Vim, בהנחה שזה לא כלי הכרחי לסוג העבודה שאתן עושות ביומיום? יכול להיות שזה ייעל את העבודה שאתן כן עושות:

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

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

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

(מקור: מילים דיגיטליות)

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

זה לא המצב כרגע.

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

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

קודם כל, הנה סרטון בסיסי ומרגיע של כמה דקות:

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

ושוב יש לי ביקורת. כי סליחה, אבל מאיפה לכן לדעת שאי אפשר לזוז עם החצים, אלא רק עם האותיות h, j, k ,l אם לא ראיתן את זה ולא שמעתן על זה קודם בחיים? אני אגיד לכן מאיפה: מזה שהרגע זה הופיע לכן מול הפרצוף:

ניווט במסמך באמצעות Vim

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

בנוסף לתפריט העזרה יש גם טוטוריאל ממש, עם שלבים ותרגילים. כל זה בתוך הטרמינל ותוך ניווט במרחב באמצעות האותיות h, j, k ,l. כאדם שמדריכי לימוד לכלים טכנולוגיים הם נושא הקרוב ללבו המקצועי, אני אגיד ככה: אם אתם לא מצליחים ללמוד בצורה כזו, אני לא חושבת שזו אשמתכם. זה חומר לימוד שנגיש רק למי שלא זקוק לו. הרי מניחים שאתם יודעים מה לחפש ואיך לנווט… וזה לא נכון. רוב האנשים לא ישרדו את המפגש הזה.

נו, אבל ככה ״מתכנתים אמיתיים״ צורכים את התיעוד שלהם, בתוך הטרמינל.

מקור: https://xkcd.com/378

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

בקיצור, די להציב סטנדרטים בלתי אפשריים לאוטודידקטיות.

בואו נדבר על סטנדרטים אפשריים. יש קורס מקוון ב־Udemy שעובר איתכם צעד–צעד על הטוטוריאל הפנימי של Vim. הוא נקרא Vim Text Editor – Learn in 10 steps, for beginners. תבדקו את הפריוויו של הקורס, לכל הקורסים שם יש לפחות סרטון אחד שפתוח לכולם בחינם שבו המרצה מציג את הקורס. נשמע מעניין? חכו שיהיה במבצע ותקנו ב־40 שקל.

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

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

עוד מקורות שיכולים לתמוך בלמידה (ותוכלו גם לחפש ולמצוא עוד רבים בעצמכן):

  • תיעוד מתוך Wikibooks: זה וגם זה.
  • דפי קיצורים יעזרו לכם. הנה אחד בלי עיצוב. הנה אחד עם עיצוב מזמין. אני שמה יותר מלינק אחד כי זה לא תיעוד רשמי, ולכן אין לדעת איזה מהם ישאר זמין גם בעוד שנתיים.
  • האתר הרשמי מלא בכל מיני מקורות מידע.
  • יש גם חומר ב־YouTube מלבד מה שהבאתי לעיל, למי שיותר מתחברת ללמידה מווידאו. חפשו לבד.

לסיום, מילה על משאבים קוגניטיביים

אתן לא חייבות ללמוד כלי אם הוא לא סופר־שימושי עבורכן ואם אתן לא מתחברות אליו. כמות הדברים שצריך ללמוד בתחום התוכנה, ובמיוחד בתחום הווב המשתנה ללא הרף, היא אדירה. אבל עוד לפני שמדברים על רכישת מיומנות ב־Vim, למה כל כך קשה לזכור שתיים וחצי פקודות? התשובה היא: חוסר תרגול. זה לא עבר לתהליכים אוטומטיים. זה נופל עליכם כשאתם לא מצפים. ולדעתי זה גם מתנגש עם דברים שכבר קודדנו כאוטומטיים, כמו שהדגמתי עם לעשות s באמצעות w: אנחנו לא מטומטמים, יש סיבה טובה שזה לא מסתדר לנו.

לצורך הבנת מגבלות הקשב והזיכרון האנושי, אני ממליצה על הרצאה של קת׳י סיירה, Making Badass Developers, שבה היא מדברת על ״מיקרו־דליפות קוגניטיביות״ והשלכותיהן. היא ממחישה את מגבלות המשאבים הקוגניטיביים שלנו, ומציגה טכניקות פרקטיות לשיפור הלמידה. מעשיר ומרתק.

4 תגובות בנושא “איך לצאת מ־Vim (ולמה לא)”

  1. רק היום נתקעתי בוים! בסוף הסוד היה ללחוץ אלף פעם Esc בזעם הולך וגואה, כמה פעמים :wq ובסוף לסגור את כל הטרמינל ואז לגלות בהפתעה שהוא בכל זאת שמר את השינויים. מה רבו מעשייך וגו'.
    כמו כן עפה על זה שאת כותבת בלשון נקבה. נהדר לקהל היעד, בכלל לא טריוויאלי וכיף ממש לקרוא.

כתיבת תגובה

האימייל לא יוצג באתר.

two × two =