В PowerShell 6.0.1 стандартное поведение заключается в том, что когда я нажимаю « Удалить», когда моя каретка находится не в конце строки, он удаляет символ над кареткой, как и ожидалось. Однако, как только я удаляю последний символ в строке, он перемещает курсор назад на позицию. Я нахожу это очень раздражающим, потому что я больше не могу просто удерживать Delete для удаления до конца строки. Есть ли способ изменить его так, чтобы он вел себя так же, как когда я нажимаю End Delete - т.е. он ничего не делает?
Исследования проведены:
Я видел отключение звукового сигнала PowerShell для возврата на задний план и подумал, что, возможно, также есть настройка для того, что я хочу, но после прочтения документации по командлету PSReadLine я обнаружил, что ее нет.
Затем я посмотрел на привязки клавиш и запустил Get-PSReadLineKeyHandler
чтобы проверить, на что в настоящий момент назначен Delete , а затем искал DeleteChar
в кодовой базе PSReadLine
, чтобы увидеть определение этой функции и найти что-то подобное. Я нашел DeleteCharOrExit и запустил Set-PSReadLineKeyHandler -Key Delete -Function DeleteCharOrExit
которая не завершает процесс "удаления" - как я предполагал из неясного комментария к документу - он выходит из консольного процесса PowerShell ...
Я также нашел https://github.com/lzybkr/PSReadLine/issues/486, который предполагает, что это было исправлено, но явно нет ...
Может быть, мне нужно ввести какой-нибудь пользовательский код привязки, например https://github.com/lzybkr/PSReadLine/blob/46d232c22ac3f24a95e32d773c594ad306dfc327/PSReadLine/SamplePSReadLineProfile.ps1#L257-L291?