במדריך המקיף הזה, אסביר כיצד למפות את המפתחות ב-Vim כדי להפוך את הפעולות לאוטומטיות. החל מיצירת מפת מפתחות בסיסית ועד למיפוי מפתחות מתקדם, לצד תהליכי הפיכתם קבועות והסרתן.
- תחביר
- Vim טיעונים מיוחדים
- יצירת מפת מפתח בסיסית
- פירוט מפות המפתח
- הפיכת מפות מפתח לקבועות
- הימנעות רקורסיה
- יצירת מפות מפתח ספציפיות למצב
- כיצד למפות אירועי עכבר
- כיצד למפות עם Leader Key ב-Vim
- כיצד למפות פונקציית Vimscript
- כיצד למפות פקודות חיצוניות ב-Vim
- כיצד להסיר מפת מפתח ב-Vim
- Vim Key Mipping Sheet
- סיכום
תחביר
כדי למפות את המפתח ב-Vim, נעשה שימוש בתחביר הבא:
בתחביר לעיל:
<מצב>מפה | nmap, imap, vmap, xmap, cmap או omap | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<טיעונים>* | <שקט>, *בתחביר לעיל, הקטע <טיעונים> הוא אופציונלי. Vim טיעונים מיוחדיםVim Special Arguments הם תגים המשמשים כדי לתת פונקציונליות נוספת למפות המפתח. ארגומנטים אלה מופיעים אחרי הפקודה :map, ולפני ה-{rhs} ו-{lhs}. לדוגמה, כדי להפוך מפה לספציפית למאגר, השתמש בארגומנט המיוחד באופן הבא: :מַפָּה < בַּלָם > < ג-א > ggVG
סימוני מפתח מיוחדים של Vim מוזכרים בתמונה הבאה.
לדוגמה, אם ברצונך להשתמש במקש הרווח במיפוי מפתחות, ייעשה שימוש בסימון יצירת מפת מפתח בסיסית ב-Vimבואו נבין את מיפוי מפתחות Vim עם דוגמה בסיסית. אני רוצה למפות את הפקודה בחר את כל השורות ( ggVG ) ל ctrl+a מפתחות. כדי למפות את מקשי ctrl+a, אריץ את הפקודה הבאה ב-Vim. :מַפָּה < ג-א > ggVG כאן, באופן דומה, כדי למפות את מספר הקו, החלף את הפונקציונליות עם F1 שימוש במפתח: :מַפָּה < F1 > :הגדר מספר !כעת, כאשר תלחץ על מקש F1, מספר השורה יופעל, ולחיצה עליו שוב משביתה אותו. שימו לב ששיטה זו תמפה רק את המפתחות במאגר הנוכחי ותוסר עם סגירת המאגר. פירוט מפות המפתחכדי לרשום את כל המיפויים העיקריים של מצבים רגילים, חזותיים ומצבים ממתינים למפעיל, השתמש בפקודה :map. :מַפָּהלרשימת מיפוי מפתח של לְהַכנִיס ו שורת הפקודה מצבים, השתמש ב-:map! פקודה. :מַפָּה !כדי לרשום את מיפוי המפתח של מצב ספציפי, פשוט הקלד את האות הראשונית של המצב לפני מילת המפתח של המפה.
יתר על כן, כדי לרשום את כל המפות כולל מפות הפלאגין עם נתיבים, השתמש :מפה מילולית פקודה. :מפה מילולית עבור מפתח ספציפי, פשוט ציין את המפתח בפקודה ( :מפה מפורטת הפיכת מפות מפתח לקבועותמפות המפתח המוזכרות בסעיף לעיל ימפו את המפתחות במאגר הנוכחי בלבד. כדי להפוך מיפוי מפתח Vim קבוע, יש למקם את המפות בקובץ vimrc.
שימו לב שבזמן הצבת מפת המקשים ב- vimrc קובץ, אל תוסיף נקודתיים (:) לפני ה- מַפָּה פקודה. לאחר הצבת מפת המקשים ב- vimrc שמור וצא ממנו באמצעות הפקודה :wq או באמצעות מקשי shift+zz. מפות המפתח שהוצבו ב- vimrc הקובץ יהיה גלובלי וניתן להשתמש בו בכל הפעלות של Vim. עם זאת, ניתן להשבית זמנית מפות מפתח מסוימות אם הן משפיעות על העבודה בהפעלה הנוכחית, ראה כיצד להסיר מפת מפתח ב-Vim להלן. ה vimrc הוא קובץ ההגדרות של Vim המכיל פקודות והגדרות שונות. זה קיים ב /usr/share/vim/ ספרייה ב-macOS ו /etc/vim על לינוקס. חשוב לציין כי vimrc הקבצים בספריות המוזכרות הם קבצים ספציפיים למערכת. אתה יכול לערוך קבצים אלה גם עבור מיפוי מפתח, אבל אני ממליץ ליצור קובץ ספציפי למשתמש vimrc קובץ בספריית הבית. הימנעות רקורסיהלפני שמתקדמים קדימה, חשוב ללמוד על רקורסיה במיפוי מפתחות Vim. החסרונות שלו וכיצד למנוע זאת. ניתן להבין זאת באמצעות דוגמה. :מַפָּה dd 3jddבדוגמה לעיל, מיפיתי את dd מקשים כדי לנוע למטה ב-3 שורות ולמחוק את השורה מתחת לסמן. עכשיו, כשאני לוחץ על dd , הוא ינסה להפעיל את המפה 3jdd . Vim יפרש את dd הפקודה כמפה והפעל את המפה שוב ושוב, כפי שמוצג בתמונה הבאה.
הערה : רקורסיה יכולה להקפיא את עורך Vim. כדי לבטל את ההקפאה, לחץ על ctrl+c מפתחות. כדי למנוע רקורסיה, החלף את מַפָּה מילת מפתח עם noremap , איפה ' לא מחדש ' אומר לא רקורסיבי . אני אחליף את מַפָּה מילת מפתח עם noremap כדי לתקן את הרקורסיה במפת המקשים שלמעלה. :noremap dd 3jddאמליץ להשתמש noremap במקום מַפָּה כדי להימנע מיצירת מיפוי רקורסיבי בטעות. יצירת מפות מפתח ספציפיות למצבVim הפכה את מיפוי המקשים לכל כך תכליתי, שאפילו מפת מפתח של מצב ספציפי ניתן ליצור די בקלות. לדוגמה, אם יצרת מפת מקשים למצב הוספה באמצעות F1 מפתח, אז אתה יכול למפות אותו הדבר F1 הכנס מצב אחר לפעולה חדשה לגמרי. בדוגמה הבאה, מיפיתי את F1 מקש למחיקת 3 שורות ב- נוֹרמָלִי מצב ומושך 3 קווים ב לְהַכנִיס מצב. :nmap < F1 > 3dd:imap < F1 > < C-t > המפה הראשונה מוחקת שלושה קווים במצב רגיל בעת לחיצה על מקש F1, בעוד המפה השנייה מוסיפה הזחה אחת בשורה הנוכחית במצב הוספה באמצעות אותו מקש. כעת, בואו נבין את המיפוי בכל מצב. מיפוי מצב רגילכדי להחיל מפה במצב רגיל, השתמש רק nmap מילת מפתח. לדוגמה, להעתיק את כל השורות בקובץ באמצעות ctrl+c מקשים, אשתמש בפקודה הבאה. :nmap < ג-ג > ggVGyכפי שנדון קודם לכן, שיטת העבודה הטובה ביותר היא להשתמש בשיטה לא רקורסיבית למיפוי מפתח, לכן, אחליף את nmap עם nnoremap מילת מפתח. :nnoremap < ג-ג > ggVGyמקם אותו ללא נקודתיים (:) ב- vimrc קובץ כדי להפוך אותו למפת מקשים קבועה. אני אשתמש noremap במקום ה מַפָּה בדוגמה הבאה. הוסף מיפוי מצבכדי למפות מפתחות עבור מצב הוספה, פשוט השתמש אני במקום נ . לדוגמה, במצב הוספה, ctrl+p ו ctrl+n המקשים משמשים להשלמה אוטומטית של המילה בהתבסס על התאמה אחורה וקדימה בהתאמה. כדי למפות את ctrl+p מקשים עם מקש tab, אני אשתמש בפקודה הבאה. :inoremap < כרטיסייה > < C-p > יותר חשוב, אם אתה רוצה למפות מצב בהמתנה למפעיל פקודות ב- מצב הוספה , אז אתה צריך להכניס את עכשיו, כשאני לוחץ על ctrl+x מפתחות, זה ידפיס את 3ddi פקודה במקום לבצע אותה.
כדי לתקן את זה, אני אכניס את כעת, הפקודה תפעיל את שמור אותי במצב הוספה. הרבה מחשבים ניידים מיני חסרים את יציאה מקש, שחשוב ליציאה מהמצב הנוכחי. אז, כדי למפות את יציאה מקש כדי לצאת ממצב הוספה, ניתן להשתמש במיפוי מפתח. בדוגמה הבאה, אני משתמש לְשֶׁעָבַר מקשים כדי לצאת למצב רגיל. :inoremap ex < יציאה >כאשר אתה לוחץ במהירות על לְשֶׁעָבַר מקשים ממצב ההכנסה ייצא, ובכך ייכנס למצב רגיל. מיפוי מצב חזותיהמצב הוויזואלי הוא מצב מאוד משמעותי לבחירת טקסט בעורך Vim. מלבד הבחירה הבסיסית, למצב החזותי יש עוד מצבים שונים כגון קו חזותי, ומצבי בלוק חזותי. במצב החזותי, טילדה (~) משמש להחלפת התיק. כדי להשתמש בטילדה (~), עליך ללחוץ על שני המקשים (shift+~) . בדוגמה הבאה, אני ממפה את מקש c פנימה מצב ויזואלי כדי לבחור מילה מתחת לסמן ולשנות את האותיות. :vnoremap c iw~כעת, הקש v כדי להיכנס למצב החזותי והקש על מקש c כדי להחליף את המילה מתחת לסמן כפי שמוצג ב-GIF הבא.
מיפוי מצב שורת פקודהפקודות חיוניות רבות של Vim פועלות במצב שורת הפקודה בלבד. כגון, לשמור את הקובץ : ב הפקודה משמשת, באופן דומה, כדי לשמור ולצאת :wq נעשה שימוש בפקודה. כל הכרטיסיות ופעולות הפיצול נעשות גם במצב שורת הפקודה. לדוגמה, כדי ליצור כרטיסייה חדשה, ה- : כפוף נעשה שימוש בפקודה. ובכן, כדי ליצור במהירות כרטיסייה, ctrl+t מספיק מפתחות. :cnoremap < C-t > נושא < CR >כעת, הקש על נקודתיים (:) כדי להיכנס למצב שורת הפקודה ולאחר מכן ctrl+t כדי לפתוח כרטיסייה חדשה; זה הרבה יותר מהיר מאשר להקליד את כולו נושא פקודה ו לַחֲזוֹר מַפְתֵחַ.
יצירת פקודות מותאמות אישית של Vim כעת, היכנס למצב הפקודה והפעל את :Mycmd פקודה. מיפוי מצבים בהמתנה למפעילמצב המתנה למפעיל הוא מצב שבו Vim ממתין לפקודת התנועה לאחר לחיצה על מקש המפעיל. האופרטורים הנפוצים הם y, d ו-c. לדוגמה, כדי למחוק את השורה הנוכחית ואת 3 השורות הבאות, תשתמש באופרטור d with 3j תנועה (d3j). לא ניתן ללחוץ על מקשים אלה בו-זמנית, כדי להשיג את הפעולה הרצויה. המצב משמש בדרך כלל למיפוי התנועות. בואו נמפה תנועה שתבחר את הקו הנוכחי ו-3 קווים ואחריהם. :onoremap < F2 > 3jכעת, כדי למשוך את הקו הנוכחי ו-3 קווים ואחריהם, השתמש ב- theF2 מפתחות, באותו אופן, את ד ניתן להחיל גם מפעיל. דבר נוסף שחשוב לזכור הוא אם אתה מוסיף ספירה לתנועה הממפה המוזכרת לעיל, נניח 2 כיצד למפות אירועי עכברלמרות ש-Vim הוא עורך טקסט המתמקד במקלדת, הזמינות של פונקציונליות העכבר הופכת אותו אפילו טוב יותר. מלבד מקשי מקלדת רגילים, ניתן למפות את כל אירועי העכבר גם ב-Vim. לדוגמה, אם ברצונך למפות את הקליק הימני והכפול השמאלי כדי לקפוץ את הסימנים קדימה ואחורה בהתאמה, השתמש במיפוי הבא. :noremap < 2 -עכבר ימני > ] `:noremap < 2 -עכבר שמאל > [ ` אירועי עכבר אחרים שניתן למפות ניתנים בטבלה הבאה.
כיצד למפות עם מפתח ה-Leader ב-Vimמיפוי Vim אינו שלם ללא מפתח המנהיג. מפתח המנהיג הוא מפתח ברירת המחדל שניתן להשתמש בו למיפוי מפתחות, גם אם הם ממופים לביצוע משימות אחרות. לדוגמה, אם מיפית את ה ד מקש למחיקת כל השורות, אז נוכל למפות את אותו מפתח למחיקת 5 שורות בלבד באמצעות מקש ה-Leader. למי שאין לו היכרות, עם מפתח Vim leader. זהו מפתח עם קידומת מפתח אחר או קבוצת מקשים למיפוי פקודות או פעולות. מפתח המנהיג המוגדר כברירת מחדל של Vim הוא קו נטוי אחורי (\), אך ניתן להתאמה אישית. לדוגמה, ה dd הפקודה משמשת למחיקת השורה מתחת לסמן. אם אתה רוצה למפות את dd הפקודה למחיקת כל השורות בקבצים, לאחר מכן תוכל להשתמש במקש המוביל. :noremap < מַנהִיג > dd ggVGdעכשיו, בכל פעם שאתה לוחץ על \dd מפתח, כל השורות בקובץ יימחקו. אתה יכול לייחס את מפתח Vim leader כמפתח הבקרה ב-Windows או כמפתח הפקודה ב-macOS. כיצד למפות פונקציית Vimscriptעורך Vim אינו מוגבל לפקודות או לפעולות. יש שפת תכנות שלמה סביב Vim ליצירת פונקציונליות מותאמת אישית בשם Vimscript. אתה יכול בקלות ליצור סקריפט או פונקציה ולמפות אותו למפתח. לדוגמה, בואו ניצור פונקציה שתאפשר הגדרות כמו מספר שורה, פונקציונליות עכבר ורוחב טקסט. פוּנקצִיָה ההגדרות שלי ( )מַעֲרֶכֶת מספר מַעֲרֶכֶת עכבר =א מַעֲרֶכֶת רוחב טקסט = 80 תפקוד קצה מקם את הפונקציה הזו בקובץ vimrc. הבה נמפה את הפונקציה הזו עם המפתח ומקשי ה-s. אני אשתמש :noremap < מַנהִיג > s: התקשר ל-MySettings ( ) < CR >עכשיו, בכל פעם שאתה לוחץ על \s מקשים, הפונקציה תיקרא וכל פונקציונליות בתוך הפונקציה תבוצע. הערה : האות הראשונה של שם הפונקציה צריכה להיות תמיד באותיות גדולות בזמן יצירת פונקציה מותאמת אישית ב-Vim. כיצד למפות פקודות חיצוניות ב-Vimניתן למפות את הפקודות החיצוניות גם ב-Vim. פקודות חיצוניות מתייחסות לפקודות לינוקס או יוניקס. לדוגמה, אם אתה רוצה למפות את החיצוני סוג הפקודה כדי למיין את כל השורות במאגר הנוכחי ל- F1 מקש, השתמש בפקודה הבאה. :noremap < F1 > : %! סוג < CR >באותו אופן, אם אתה כותב קובץ סקריפט והופך אותו לניתן להפעלה מבלי לצאת מההפעלה של Vim, אתה יכול להשתמש ב- chmod פיקוד פנימי. לדוגמה, כדי להפוך את הקובץ הנוכחי לניתן להפעלה, אתה יכול לבצע את הפקודה :!chmod +x % ב-Vim. אם אתה מבצע משימה זו לעתים קרובות, פשוט מפה לה מפתח. :noremap < F1 > : ! chmod +x %ב-Vim, ניתן להשתמש בכל פקודה חיצונית עם סימן קריאה (!). כיצד להסיר מפת מפתח ב-Vimכדי להסיר מפות מפתח ב-Vim, תחילה זהה היכן הוא מוגדר. כפי שנדון קודם לכן, מפות מפתח יכולות להיות מאגר מקומיות וקבועות. אם מפת המקשים קבועה וממוקמת בקובץ vimrc, אז פשוט הסרתם מהקובץ תבטל את מיפוי המפתחות. אם המיפוי נעשה במאגר הנוכחי, ניתן להסיר אותם באמצעות : unmap אוֹ :בטל מפה! פקודות.
לדוגמה, כדי להסיר את
כדי להסיר את כל המפות במאגר הנוכחי, השתמש ב- :mapclear פקודה. :mapclearהפקודה לעיל תנקה את כל מפות המקשים של מצב רגיל, חזותי, בחירה או מצב ממתין למפעיל. כדי לנקות את כל מפות המקשים של מצבי הוספה ושורת הפקודה, השתמש ב: :mapclear ! שים לב שפקודות ברירת המחדל של Vim אינן יכולות להיות ברורות, עם זאת, ניתן לבטל אותן באמצעות : unmap פקודה עם <לא> . לדוגמה, אם ברצונך להשבית את פונקציונליות dd שמוחקת את השורה מתחת לסמן, השתמש :unmap dd ה-dd לא יפעל עוד במאגר הנוכחי. באמצעות שיטה זו, ניתן להשבית כל מפת מפתח עבור ההפעלה הנוכחית. Vim Key Mipping Sheetהתמונה הבאה מספקת רשימה של כל הפקודות והמצבים הספציפיים שלהן לעיון.
סיכוםמיפוי מפתחות Vim הוא דרך שימושית להפוך את המשימות שלך לאוטומטיות, קשירת מקשים בשימוש תכוף, פקודות ופעולות אחרות. זה נושא מגוון ובמדריך זה כיסיתי את כל ההיבטים העיקריים הקשורים למיפוי מפתח ב-Vim. מתחביר כללי ליצירת מפת מפתח בסיסית וכל הדרך למיפוי פונקציות מתקדמות של Vimscript ופקודות חיצוניות. למידע נוסף על מיפוי מפתחות Vim, השתמש ב- :עזרה במיפוי מפתחות פקודה ב-Vim. |