הבלוג של ינון פרק

טיפים קצרים וחדשות למתכנתים

אפשר לראות את ה vimrc שלך?

19/03/2022
vim

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

כשאנחנו קוראים קבצי הגדרות כאלה של אחרים יש לנו שתי אפשרויות-

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

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

השיטה השניה תביא תוצאות מהר יותר. השניה את התוצאות הטובות יותר.

ביטויים רגולאריים וקסמים של וים

21/12/2018
vim

בוובינר ביטויים רגולאריים אתמול רציתי להראות דוגמא לביטוי שלוקח שורה כמו זו:

<img src="cat.png" />

והופך אותה לשורה שנראית כך:

<img src="cat-1.png" />

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

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

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

/\V\[0-9]\[0-9]

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

/\V\d\d

למצב קצת קסום אנחנו נכנסים עם \M בתחילת הביטוי ומצב זה ממש דומה ל"לא קסום בכלל" מלבד התווים ^ ו $ שלא צריכים שתכתבו \\ לפניהם.

למצב קסום אנחנו נכנסים עם \m בתחילת הביטוי. מצב זה מזכיר מאוד את grep ובו רוב הסימנים המיוחדים יעבדו בלי \\ אבל עדיין יהיו מספר סימנים מיוחדים שכן יצטרכו \\ לפניהם לדוגמא +, ? ו {}.

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

בחזרה לדוגמא מתחילת הפוסט הביטוי הראשון שניסיתי לכתוב בוובינר היה:

:s/\vsrc="(\w+)\.(\w+)"/src="\1-1.\2"/

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

התיקון הכי פשוט יהיה להוסיף \\ לפני סימן השווה ואז נקבל את הביטוי הבא שעובד:

:s/\vsrc\="(\w+)\.(\w+)"/src="\1-1.\2"/

אגב עכשיו שזה מאחורינו בואו נראה את הגירסאות המתאימות של הביטוי גם במצבי הקסם האחרים:

:s/\Vsrc="\(\w\+\).\(\w\+\)"/src="\1-1.\2"/
:s/\msrc="\(\w\+\).\(\w\+\)"/src="\1-1.\2"/
:s/\Msrc="\(\w\+\).\(\w\+\)"/src="\1-1.\2"/

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

http://vimdoc.sourceforge.net/htmldoc/pattern.html#pattern

איך הפסקתי לפחד ונתתי למחשב לעבוד בשבילי

01/08/2016
vim

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

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

ואז למדתי יוניקס.

המשך קריאה

סניפטים לעניים ב-וים

23/05/2016
vim

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

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

המשך קריאה

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

21/03/2016
vim

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

המשך קריאה

3 שאלות שכל מתכנתת צריכה לשאול את עורך הטקסט שלה

13/07/2015
vim

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

המשך קריאה

בדיקת תחביר ב-וים באמצעות Syntastic

06/07/2015
vim

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

המשך קריאה

האם עורך הטקסט שלכם מסוגל לעשות את זה?

04/05/2015
vim

נניח שאתם רוצים לבנות גלריית תמונות מבוססת HTML מתוך תיקיית תמונות על המחשב. עבור כל תמונה תצטרכו לרשום אלמנט img מתאים עם src ו alt, עטוף בכמה אלמנטי div כדי שיהיה קל לעצב אותו. עכשיו נניח ויש לכם כמה עשרות תמונות כאלו בתיקייה. בואו נפתח וים ונראה כיצד עורך טקסט טוב יכול לחסוך לנו הקלדה.

המשך קריאה