Поделиться через


Использование обработчиков ключей PSReadLine

Модуль PSReadLine предоставляет обработчики ключей, которые сопоставляют функции PSReadLine с аккордами клавиатуры. Аккорды клавиатуры — это последовательность одного или нескольких нажатий клавиш, которые одновременно нажимаются. Например, аккорд Ctrl+Пробел — это сочетание клавиш Ctrl и Пробел, нажимаемых одновременно. Функция PSReadLine — это предопределенное действие, которое можно выполнить в командной строке. Например, функция MenuComplete позволяет выбрать из списка параметров в меню, чтобы завершить ввод на командной строке.

PSReadLine имеет несколько предопределенных обработчиков ключей, привязанных по умолчанию. Вы также можете определить собственные пользовательские обработчики ключей. Выполните следующую команду, чтобы перечислить обработчики ключей, которые в настоящее время определены.

Get-PSReadLineKeyHandler

Вы также можете получить список всех несвязанных функций PSReadLine , доступных для привязки к аккорду ключа.

Get-PSReadLineKeyHandler -Unbound

С помощью командлета Set-PSReadLineKeyHandler можно привязать функцию к обработчику ключей. Следующая команда привязывает MenuComplete функцию к клавишам Ctrl и +.

Set-PSReadLineKeyHandler -Chord 'Ctrl+Spacebar' -Function MenuComplete

Поиск имён ноты и сочетаний аккордов

Имена ключей в аккорде определяются [System.ConsoleKey] перечислением. Для получения дополнительной информации см. документацию по System.ConsoleKey. Например, название клавиши 2 в [System.ConsoleKey]D2, а название клавиши 2 на числовой клавиатуре NumPad2. Вы можете использовать метод [System.Console]::ReadKey(), чтобы найти имя нажатой клавиши.

[System.Console]::ReadKey()

В следующих выходных данных показаны сведения, возвращаемые методом ReadKey() для аккорда клавиш CTRL+2 .

KeyChar Key Modifiers
------- --- ---------
        D2   Control

Для командлетов обработчика ключей PSReadLine этот аккорд представлен как Ctrl+D2. В следующем примере выполняется привязка этого аккорда к функции.

Set-PSReadLineKeyHandler -Chord 'Ctrl+D2' -Function MenuComplete

Можно привязать несколько шнуров к одной функции. По умолчанию BackwardDeleteChar функция привязана к двум аккордам.

Get-PSReadLineKeyHandler -Chord Backspace, Ctrl+h
Key       Function           Description
---       --------           -----------
Backspace BackwardDeleteChar Delete the character before the cursor
Ctrl+h    BackwardDeleteChar Delete the character before the cursor

Замечание

Параметр Chordчувствителен к регистру. Это означает, что можно создать различные привязки для ctrl+X и CTRL+X.

В Windows можно также использовать аккорд клавиши ALT+? для отображения функции, привязанной к следующему ключевому аккорду, который вы вводите. При вводе ALT+отображается следующая строка:

what-is-key:

При нажатии клавиши Backspace вы получите следующий ответ:

Backspace: BackwardDeleteChar - Delete the character before the cursor

Обработчики ключей на компьютерах, отличных от Windows

Коды ключей, созданные клавиатурой, могут отличаться в зависимости от используемого операционной системы и приложения терминала.

macOS

Клавиатура Macintosh не имеет клавиши ALT , таких как системы Windows и Linux. Вместо этого есть клавиша ⌥ Option. macOS использует этот ключ не так, как клавиша ALT в других системах. Однако вы можете настроить терминал и приложения iTerm2 в macOS, чтобы рассматривать его как alt-ключ .

Настройка приложения терминала

Откройте окно "Параметры " на панели приложений в Terminal.app. Выберите профили и выберите профиль, который требуется настроить. Выберите вкладку "Клавиатура " параметров конфигурации. Под списком ключей выберите параметр "Использовать" в качестве параметра метаключа . Этот параметр позволяет клавише ⌥ (Option) действовать как alt в терминальном приложении.

Снимок экрана: параметры Terminal.app.

Настройка приложения iTerm2

Откройте окно "Параметры " на панели приложений в iTerm.app. Выберите профили и выберите профиль, который требуется настроить. Перейдите на вкладку "Ключи" параметров конфигурации. Выберите параметр ESC+ для настройки левой клавиши Option и правой клавиши Option. Этот параметр позволяет клавише ⌥ Option действовать как Alt в приложении iTerm.

Снимок экрана: параметры iTerm.app.

Замечание

Точные шаги могут отличаться в зависимости от версий macOS и приложений терминала. Эти примеры были записаны в macOS Ventura 13.2.1 и iTerm2 версии 3.4.16.

Линукс

На платформах Linux созданный ключ может отличаться от других систем. Рассмотрим пример.

  • CTRL+[ совпадает с Escape

  • CTRL+Пробел создает коды ключей для CTRL+D2. Если вы хотите сопоставить функцию CTRL+ПРОБЕЛ , необходимо использовать аккорд Ctrl+D2.

    Set-PSReadLineKeyHandler -Chord 'Ctrl+D2' -Function MenuComplete
    

ReadKey() Используйте метод для проверки кодов ключей, созданных клавиатурой.

Часто используемые обработчики ключей

Ниже приведены несколько часто используемых обработчиков ключей, привязанных по умолчанию в Windows. Обратите внимание, что привязка ключа может отличаться на платформах, отличных от Windows.

Выполните входные данные, выбрав в меню возможные значения завершения.

Аккорд по умолчанию: Ctrl+Spacebar

В следующем примере показано меню возможных завершений для команд, начиная с select.

PS C:\> select<Ctrl+Spacebar>
select                   Select-Object            Select-PSFPropertyValue  Select-Xml
Select-AzContext         Select-PSFConfig         Select-PSMDBuildProject
Select-AzSubscription    Select-PSFObject         Select-String

Select-Object

Используйте клавиши со стрелками, чтобы выбрать нужное завершение. Нажмите клавишу ВВОД , чтобы завершить входные данные. При переходе по выбранным параметрам под меню отображается справка по выбранной команде.

Очистить экран

Эта функция очищает экран, аналогичный cls командам или clear командам.

Аккорд по умолчанию: Ctrl+l

АргументВыбораКоманды

Выбирает следующий аргумент в командной строке.

Аккорд по умолчанию: Alt+a

В истории команд могут быть те, которые вы хотите запустить снова с другими значениями параметров. Вы можете использовать аккорд для циклического перехода по каждому параметру и изменения значения по мере необходимости.

New-AzVM -ResourceGroupName myRGName -Location eastus -Name myVM

При нажатии клавиши ALT+в свою очередь выбирается следующий аргумент параметра: myRGName, eastus, myVM.

GotoBrace

Перемещает курсор в соответствующую фигурную скобку.

Аккорд по умолчанию: Ctrl+]

Эти функции перемещают курсор на закрывающую фигурную скобку, которая соответствует фигурной скобке в текущей позиции курсора в командной строке. Функция работает для квадратных скобок ([]), фигурных скобок ({}) и круглых скобок (()).

ЦифровойАргумент

Запуск или накопление числового аргумента, используемого для повторения нажатия клавиш указанного количества раз.

Аккорд по умолчанию: Alt+0 через Alt+9

Например, нажатие Alt+4+# вводит #### в командной строке.

См. также