ZSH-стиль автодополнения в PowerShell с PSReadLine
Я искал способ получить автодополнение в стиле ZSH (это когда по мере ввода показываются команды из вашей истории, и их можно дополнить простым нажатием стрелки вправо). В итоге наткнулся на PSReadLine - мощный модуль PowerShell, который делает автодополнение именно так, как мне хотелось, и умеет гораздо больше.
В основном использую его ради автодополнения, но если вы пробежитесь по его профилю по умолчанию, то найдёте там ещё несколько очень приятных возможностей. Теперь к установке и настройке.
Для начала нужно убедиться, что Execution Policy установлена в RemoteSigned. Для этого запустите PowerShell от имени администратора:
set-executionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine
Затем установите модуль:
Install-Module PSReadLine
После этого нужно добавить несколько строк в ваш файл профиля (файл .ps1). По умолчанию он находится в папке ~/Documents/PowerShell:
# import the module to enable it Import-Module PSReadline # Shows navigable menu of all options when hitting Tab Set-PSReadlineKeyHandler -Key Tab -Function MenuComplete # enable up/down arrows for navigating through the history Set-PSReadLineKeyHandler -Key UpArrow -Function HistorySearchBackward Set-PSReadLineKeyHandler -Key DownArrow -Function HistorySearchForward # moves the cursor to the end of the autocompleted command (remove if you want the cursor to remain where the completion started from) Set-PSReadLineOption -HistorySearchCursorMovesToEnd # enable zsh autocompletion like auto completion Set-PSReadlineOption -PredictionSource History
По умолчанию история будет браться из стандартного расположения. Его можно узнать с помощью Get-PSReadlineOption. Обычно это:
%USERPROFILE%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine