Документация · Где работает

Lang Switcher в консоли, PowerShell и Windows Terminal

В 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 или другой границы слова. На диск нажатия не пишутся никогда.

Если способ замены задан вручную

Способ замены выбирается сам — по окну. Если в файле настроек вписано [replacement] method = "backspace", выбора нет: в классической консоли с Windows PowerShell 5.1 слово снова пропадает. Оставьте auto.

Что не проверялось

PowerShell 7 и другие программы в классической консоли получают тот же путь замены, но замер был только в Windows PowerShell 5.1 и cmd. Отказ на мёртвой клавише и AltGr проверен тестами, а не в живой консоли.

Вопросы и проблемыв группе Panda Koding, тема Lang Switcher: Telegram ↗ · MAX ↗