В Windows 10 у консоли PowerShell появилось много новых возможностей, некоторые из которых обеспечиваются модулем PSReadLine. PSReadLine — это сторонний PowerShell-модуль, предназначенный для расширения функционала консоли PowerShell. Использование этого модуля позволяет облегчить работу в консоли и сделать ее более комфортной.
Данные о модуле можно вывести командой:
Get-Module PSReadLine | fl
Функционал
PSReadLine обладает рядом полезных возможностей, таких как подсветка синтаксиса и предупреждение об ошибках при написании команд. Так в примере ниже пропущена кавычка и модуль сигнализирует об этом.
Также в модуле есть механизм автозавершения. Для примера вводим команду Get-Process и нажимаем Ctrl+Space, затем перемещаясь с помощью стрелки выбираем нужный вариант из меню и жмем Enter. Очень удобно, особенно если не помнишь точные названия параметров.
При необходимости ввода многострочной команды можно воспользоваться сочетанием клавиш Shift+Enter, которое открывает новую строку для продолжения ввода команды. Что примечательно, здесь можно свободно перемещаться между строками и редактировать текст, находящийся на разных строках.
Отдельно стоит упомянуть об истории команд. Вообще в PowerShell есть своя история команд, однако PSReadLine ведет свою, по которой очень удобно осуществлять поиск. Поиск осуществляется с помощью сочетания клавиш Ctrl+R (поиск назад) и Ctrl+S (поиск вперед). Для поиска надо просто набрать нужное сочетание клавиш и в строке поиска ввести часть команды.
И что особенно примечательно, история команд сохраняется в текстовый файл и, соответственно, может быть использована в разных сессиях, а не только в текущей.
Настройка
Большинство функций в PSReadLine могут настраиваться. Для примера выведем список параметров, отвечающих за историю команд:
Get-PSReadlineOption | fl *history*
Теперь возьмем параметр HystoryNoDuplicates, отвечающий за исключение дублирующих команд из истории. По умолчанию он выключен. Включим его командой:
Set-PSReadlineOption -HistoryNoDuplicates
Сочетания клавиш также могут быть настроены под себя. Посмотреть текущие сочетания можно командой Get-PSReadlineKeyHandler,
а изменить — Set-PSReadlineKeyHandler. Для примера назначим на Ctrl+Q переход в начало , а на Ctrl+W — переход в конец истории команд:
Set-PSReadlineKeyHandler -Key ^Q -Function BeginningOfHistory
Set-PSReadlineKeyHandler -Key ^W -Function EndOfHistory
Теперь нажимаем Ctrl+Q и получаем самую первую из введенных команд.
Установка
В Windows 10 модуль PSReadLine входит в состав системы, для других ОС его надо устанавливать отдельно. Сделать это можно несколькими разными способами. Наиболее удобный способ — это установка из репозитория PowerShell с помощью модуля PowerShellGet (ранее известного как OneGet). PowerShellGet входит в состав PowerShell v5 и Windows Management Framework 5, а для более ранних версий PowerShell (v3 и v4) может быть загружен и установлен отдельно.
PowerShellGet позволяет загрузить и установить модуль одной простой командой Install-Module PSReadLine. Кроме того, с помощью команды Update-Module можно обновлять модуль до новой версии.
Как вариант, PSReadLine можно установить из GitHub, с помощью стороннего модуля PsGet или вручную загрузив и распаковав его в папку с остальными модулями. Но, как заявляет автор модуля, это нерекомендуемый способ, поскольку в GitHub модуль обновляться не будет, а в перспективе может быть совсем оттуда удален.
Опечатка history вместо hystory
Спасибо за статью!