מדריך · איפה זה עובד

Lang Switcher במסוף: ב-Windows Terminal, ב-cmd וב-PowerShell

ב-Windows Terminal ובמסוף הקלאסי המילה שהוקלדה מתוקנת, אבל טקסט מסומן לא: התוכנה יודעת מה מסומן רק דרך Ctrl+C, ובמסוף המקש הזה עוצר את הפקודה.

מה עובד

המילה שהוקלדה מתוקנת ב-Windows Terminal ובמסוף הקלאסי, כלומר החלון conhost שבו נפתחים cmd ו-Windows PowerShell כש-Windows Terminal אינו מסוף ברירת המחדל. הקשה שנייה מחזירה את מה שהוקלד; גם אותיות גדולות ורווחים עוברים. כך גם במסוף שהופעל כמנהל: למה.

טקסט מסומן: לא

טקסט שסומן בעכבר או ב-Shift ובמקשי החצים לא מומר במסוף. התוכנה יודעת מה מסומן רק דרך Ctrl+C, ובמסוף המקש הזה, אם שום דבר לא מסומן, מבטל את השורה שהוקלדה ועוצר את הפקודה שרצה. לכן במסוף מקש הקיצור עובד רק עם מילה שהוקלדה, ובלעדיה לא עושה כלום. תקנו מילה מיד אחרי ההקלדה, לפני Enter.

איך ההחלפה עובדת

  • Windows Terminal — כמו כל חלון אחר: התוכנה מוחקת את המילה וכותבת את החדשה.
  • המסוף הקלאסי — Windows PowerShell 5.1 לא מקבל מילה חדשה שנשלחת תו אחר תו: המילה נמחקה והחדשה לא הופיעה. לכן כאן התוכנה מחליפה קודם את שפת המקלדת בחלון, אחר כך מוחקת את המילה בבת אחת ומקישה את אותם מקשים שהקשתם. כך החדשה מגיעה גם ל-Windows PowerShell וגם ל-cmd.

מתי המילה נשארת כפי שהיא

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

סיסמה במסוף

התוכנה לא מחשיבה בקשת סיסמה במסוף (ssh, sudo) כשדה סיסמה: מה שמוקלד שם נשמר כמו מילה רגילה, עד Enter או סיום אחר של המילה. בשפות כמו ערבית ופרסית היא גם שומרת בזיכרון 64 הקשות אחרונות, עד שמחליפים חלון או מפסיקים להקליד לדקה. הקשות לא נכתבות לדיסק אף פעם.

אם קבעתם את שיטת ההחלפה ידנית

שיטת ההחלפה נבחרת אוטומטית לפי החלון. אם כתבתם בקובץ ההגדרות [replacement] method = "backspace", אין בחירה: במסוף הקלאסי עם Windows PowerShell 5.1 המילה שוב הולכת לאיבוד. השאירו auto.

מה לא נבדק

PowerShell 7 ותוכניות אחרות במסוף הקלאסי הולכות באותה דרך החלפה, אבל המדידה נעשתה רק ב-Windows PowerShell 5.1 וב-cmd. הדילוג על מקש מת ו-AltGr נבדק בבדיקות, לא במסוף אמיתי.

שאלות ובעיותב-GitHub Issues ↖ או במייל send.me@panda-pishet-kod.dev