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


Использование обработчиков ключей 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. Вместо этого он имеет ключ параметра ⌥. macOS использует этот ключ не так, как клавиша ALT в других системах. Однако вы можете настроить терминал и приложения iTerm2 в macOS, чтобы рассматривать его как alt-ключ .

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

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

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

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

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

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

Примечание.

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

Linux

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

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

  • Ctrl+Spacebar создает коды ключей для 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

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

ClearScreen

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

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

SelectCommandArgument

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

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

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

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

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

GotoBrace

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

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

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

DigitArgument

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

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

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

См. также