Обновите привязки клавиатуры powershell, чтобы они соответствовали стилю emacs, например, оболочке bash.

Я хорошо знаком с ярлыками оболочки bash по умолчанию (стиль emacs). Например, если я хочу переместить курсор вперед на слово, я нажимаю Alt+F (так же, как в emacs). Я могу перейти к предыдущей команде с помощью Ctrl+P.

Возможно ли даже в Windows PowerShell переопределить эти ярлыки? Если да, то знает ли кто-нибудь хороший способ сопоставить конфигурации ярлыков оболочки bash по умолчанию с powershell (например, в оболочке bash вы можете сказать set -o emacs)?

Если это поможет, я действительно не забочусь о powershell, скажем, я забочусь о оболочке posh-git. Однако, насколько я могу судить, git-shell наследует свои свойства от powershell.


person Matt Messersmith    schedule 08.04.2017    source источник


Ответы (1)


Вы можете сделать это с помощью модуля PSReadLine, который поставляется с PowerShell 5.0 (Windows 10).

Просто установите для параметра EditMode значение Emacs:

Set-PSReadLineOption -EditMode Emacs

В дополнение к режиму Windows по умолчанию, он также имеет режим Vi.

В файле README проекта упоминается, что ни один из них не реализован полностью, поэтому не ожидайте полного паритета функций, но я могу подтвердить что он переключает завершение табуляции на стиль bash и поддерживает привязки клавиш Alt+F и Ctrl+P для перехода вперед и перехода к предыдущей команде соответственно.

(Я не являюсь опытным пользователем emacs, поэтому не могу сказать, "достаточно ли это близко" к тому, что вы ожидаете)

person Mathias R. Jessen    schedule 08.04.2017
comment
Это сработало для powershell. Спасибо! К сожалению, оболочке posh-git все равно не понравилось, когда я включил эту команду в профиль по умолчанию. Вы вообще использовали оболочку posh-git? - person Matt Messersmith; 08.04.2017
comment
@ mwm314 mwm314 Нет, к сожалению, я не использую posh-git (ваш вопрос говорил о git-shell, я тестировал Git Shell, который поставляется с GitHub Desktop для Windows) - person Mathias R. Jessen; 08.04.2017
comment
По крайней мере, хорошо работают Ctrl+A, Ctrl-E, Ctrl-P, Ctrl-N. Очень полезно - person bzhu; 07.12.2019
comment
Этот параметр действует только в текущем сеансе. как я могу заставить его действовать постоянно - person yuzhen; 15.05.2020
comment
@yuzhen Добавьте его в свой профиль! - person Mathias R. Jessen; 15.05.2020
comment
@MathiasR.Jessen Спасибо, кстати, вам нужно сгенерировать сценарий профиля Powershell, набрав $profile, во-вторых, предоставить Set-ExecutionPolicy неограниченное значение, наконец, вставить параметры времени выполнения во вновь созданный сценарий и перезапустить PowerShell. не так просто. - person yuzhen; 22.05.2020
comment
Vim $profile Set-PSReadLineOption -EditMode Emacs Добавьте указанную выше строку в $profile Set-ExecutionPolicy unlimited Перезапустите powershell (Как сделать его постоянным в стиле emacs) - person yuzhen; 11.03.2021