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


Set-PSReadLineOption

Настраивает поведение редактирования командной строки в PSReadLine.

Синтаксис

Set-PSReadLineOption
   [-EditMode <EditMode>]
   [-ContinuationPrompt <String>]
   [-HistoryNoDuplicates]
   [-AddToHistoryHandler <System.Func[System.String,System.Object]>]
   [-CommandValidationHandler <System.Action[System.Management.Automation.Language.CommandAst]>]
   [-HistorySearchCursorMovesToEnd]
   [-MaximumHistoryCount <Int32>]
   [-MaximumKillRingCount <Int32>]
   [-ShowToolTips]
   [-ExtraPromptLineCount <Int32>]
   [-DingTone <Int32>]
   [-DingDuration <Int32>]
   [-BellStyle <BellStyle>]
   [-CompletionQueryItems <Int32>]
   [-WordDelimiters <String>]
   [-HistorySearchCaseSensitive]
   [-HistorySaveStyle <HistorySaveStyle>]
   [-HistorySavePath <String>]
   [-AnsiEscapeTimeout <Int32>]
   [-PromptText <String[]>]
   [-ViModeIndicator <ViModeStyle>]
   [-ViModeChangeHandler <ScriptBlock>]
   [-Colors <Hashtable>]
   [<CommonParameters>]

Описание

Командлет Set-PSReadLineOption настраивает поведение модуля PSReadLine при редактировании командной строки. Чтобы просмотреть параметры PSReadLine , используйте Get-PSReadLineOption.

Параметры, заданные этой командой, применяются только к текущему сеансу. Чтобы сохранить любые параметры, добавьте их в скрипт профиля. Дополнительные сведения см. в разделе about_Profiles и настройка среды оболочки.

Примеры

Пример 1. Настройка переднего плана и фоновых цветов

Этот пример задает PSReadLine для отображения маркера комментария с зеленым текстом переднего плана на сером фоне. В escape-последовательности, используемой в примере, 32 представляет цвет переднего плана, а 47 — цвет фона.

Set-PSReadLineOption -Colors @{ "Comment"="$([char]0x1b)[32;47m" }

Вы можете задать только цвет текста переднего плана. Например, цвет ярко-зеленого цвета текста переднего плана для маркера комментария: "Comment"="$([char]0x1b)[92m"

Пример 2. Настройка стиля колокола

В этом примере PSReadLine будет реагировать на ошибки или условия, требующие внимания пользователя. BellStyle устанавливается для выдачи звукового сигнала в 1221 Гц для 60 мс.

Set-PSReadLineOption -BellStyle Audible -DingTone 1221 -DingDuration 60

Примечание.

Эта функция может не работать во всех узлах на платформах.

Пример 3. Настройка нескольких параметров

Set-PSReadLineOption может задать несколько параметров с хэш-таблицей.

$PSReadLineOptions = @{
    EditMode = "Emacs"
    HistoryNoDuplicates = $true
    HistorySearchCursorMovesToEnd = $true
    Colors = @{
        "Command" = "#8181f7"
    }
}
Set-PSReadLineOption @PSReadLineOptions

Хэш-таблица $PSReadLineOptions задает ключи и значения. Set-PSReadLineOption использует ключи и значения для @PSReadLineOptions обновления параметров PSReadLine .

Ключи и значения, вводя имя хэш-таблицы, $PSReadLineOptions можно просмотреть в командной строке PowerShell.

Пример 4. Настройка нескольких параметров цвета

В этом примере показано, как задать несколько значений цвета в одной команде.

Set-PSReadLineOption -Colors @{
  Command            = 'Magenta'
  Number             = 'DarkGray'
  Member             = 'DarkGray'
  Operator           = 'DarkGray'
  Type               = 'DarkGray'
  Variable           = 'DarkGreen'
  Parameter          = 'DarkGreen'
  ContinuationPrompt = 'DarkGray'
  Default            = 'DarkGray'
}

Пример 5. Установка значений цвета для нескольких типов

В этом примере показаны три различных метода настройки цвета маркеров, отображаемых в PSReadLine.

Set-PSReadLineOption -Colors @{
 # Use a ConsoleColor enum
 "Error" = [ConsoleColor]::DarkRed

 # 24 bit color escape sequence
 "String" = "$([char]0x1b)[38;5;100m"

 # RGB value
 "Command" = "#8181f7"
}

Пример 6. Использование ViModeChangeHandler для отображения изменений в режиме Vi

В этом примере создается escape-экран изменения курсора VT в ответ на изменение режима Vi .

function OnViModeChange {
    if ($args[0] -eq 'Command') {
        # Set the cursor to a blinking block.
        Write-Host -NoNewLine "$([char]0x1b)[1 q"
    } else {
        # Set the cursor to a blinking line.
        Write-Host -NoNewLine "$([char]0x1b)[5 q"
    }
}
Set-PSReadLineOption -ViModeIndicator Script -ViModeChangeHandler $Function:OnViModeChange

Функция OnViModeChange задает параметры курсора для режимов Vi : вставка и команда. ViModeChangeHandler использует Function: поставщик для ссылки на OnViModeChange в качестве объекта блока скрипта.

Дополнительные сведения см. в about_Providers.

Пример 7. Использование HistoryHandler для фильтрации команд, добавленных в журнал

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

$ScriptBlock = {
    Param([string]$line)

    if ($line -match "^git") {
        return $false
    } else {
        return $true
    }
}

Set-PSReadLineOption -AddToHistoryHandler $ScriptBlock

Скриптблок возвращается$false, если команда запущена.git Это имеет тот же эффект, что и возврат перечисления SkipAdding AddToHistory . Если команда не начинается, gitобработчик возвращает $true и PSReadLine сохраняет команду в журнале.

Пример 8. Использование CommandValidationHandler для проверки команды перед выполнением команды

В этом примере показано, как использовать параметр CommandValidationHandler для выполнения команды перед выполнением команды. В примере специально проверяется наличие команды с помощью вложенной команды git cmt и заменяется полное имя commit. Таким образом можно создать сокращенные псевдонимы для вложенных команд.

# Load the namespace so you can use the [CommandAst] object type
using namespace System.Management.Automation.Language

Set-PSReadLineOption -CommandValidationHandler {
    param([CommandAst]$CommandAst)

    switch ($CommandAst.GetCommandName()) {
        'git' {
            $gitCmd = $CommandAst.CommandElements[1].Extent
            switch ($gitCmd.Text) {
                'cmt' {
                    [Microsoft.PowerShell.PSConsoleReadLine]::Replace(
                        $gitCmd.StartOffset, $gitCmd.EndOffset - $gitCmd.StartOffset, 'commit')
                }
            }
        }
    }
}
# This checks the validation script when you hit enter
Set-PSReadLineKeyHandler -Chord Enter -Function ValidateAndAcceptLine

Пример 9. Использование параметра PromptText

При возникновении ошибки синтаксического анализа PSReadLine изменяет часть красной строки запроса. Параметр PromptText сообщает PSReadLine части строки запроса, чтобы сделать красным.

Например, в следующем примере создается запрос, содержащий текущий путь, за которым следует символ> () и пробел.

function prompt { "PS $pwd> " }`
Set-PSReadLineOption -PromptText '> ' # change the '>' character red
Set-PSReadLineOption -PromptText '> ', 'X ' # replace the '>' character with a red 'X'

Первая строка — это часть строки запроса, которую нужно сделать красной при возникновении ошибки синтаксического анализа. Вторая строка — это альтернативная строка, используемая при возникновении ошибки синтаксического анализа.

Параметры

-AddToHistoryHandler

Задает ScriptBlock , который управляет добавлением команд в журнал PSReadLine .

ScriptBlock получает командную строку в качестве входных данных.

ScripBlock должен возвращать элемент перечисления AddToHistoryOption, строковое имя одного из этих элементов или логическое значение. В приведенном ниже списке описываются возможные значения и их эффекты.

  • MemoryAndFile — добавьте команду в файл журнала и текущий сеанс.
  • MemoryOnly — добавьте команду в журнал только для текущего сеанса.
  • SkipAdding — Не добавляйте команду в файл журнала для текущего сеанса.
  • $false — То же, что и если бы значение было SkipAdding.
  • $true — То же, что и если бы значение было MemoryAndFile.
Тип:Func<T,TResult>[System.String,System.Object]
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-AnsiEscapeTimeout

Этот параметр зависит от Windows при перенаправлении входных данных, например при запуске в tmux или screen.

При перенаправлении входных данных в Windows многие ключи отправляются в виде последовательности символов, начиная с escape-символа. Невозможно различать один escape-символ, за которым следует больше символов и допустимую последовательность escape-адресов.

Предполагается, что терминал может отправлять символы быстрее, чем типы пользователей. PSReadLine ожидает этого времени ожидания перед выводом о том, что он получил полную escape-последовательность.

Если при вводе отображаются случайные или непредвиденные символы, можно настроить это время ожидания.

Тип:Int32
Position:Named
Default value:100
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-BellStyle

Указывает, как PSReadLine реагирует на различные ошибки и неоднозначные условия.

Допустимы следующие значения.

  • Audible: Короткий сигнал.
  • Визуальный элемент: текст мигает кратко.
  • Нет: нет отзывов.
Тип:BellStyle
Position:Named
Default value:Audible
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-Colors

Параметр Colors задает различные цвета, используемые PSReadLine.

Аргумент — это хэш-таблица, в которой ключи указывают элементы и значения, указывающие цвет. Дополнительные сведения см. в about_Hash_Tables.

Цвета могут быть либо значением из ConsoleColor, например [ConsoleColor]::Red, либо допустимой escape-последовательностью ANSI. Допустимые escape-последовательности зависят от терминала. В PowerShell 5.0 используется $([char]0x1b)[91mпример escape-последовательности для красного текста. В PowerShell 6 и более поздней версии одна и та же escape-последовательность `e[91m. Можно указать другие escape-последовательности, включая следующие типы:

  • Цвет 256
  • 24-разрядный цвет
  • Передний план, фон или оба
  • Обратный, полужирный

Дополнительные сведения о коде цветов ANSI см. в статье Википедии ANSI escape-код.

Допустимые ключи включают:

  • ContinuationPrompt: цвет запроса продолжения.
  • Выделение: цвет выделения. Например, соответствующий текст при поиске в журнале.
  • Ошибка: цвет ошибки. Например, в запросе.
  • Выделение: цвет для выделения выделенного меню или выделенного текста.
  • По умолчанию: цвет маркера по умолчанию.
  • Примечание. Цвет маркера комментария.
  • Ключевое слово: цвет маркера ключевого слова.
  • Строка: цвет токена строки.
  • Оператор: цвет маркера оператора.
  • Переменная: цвет маркера переменной.
  • Команда: цвет маркера команды.
  • Параметр: цвет маркера параметра.
  • Тип: цвет маркера типа.
  • Число: цвет маркера числа.
  • Член: цвет маркера имени члена.
Тип:Hashtable
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-CommandValidationHandler

Задает scriptBlock , который вызывается из ValidateAndAcceptLine. Если исключение возникает, проверка завершается ошибкой и сообщается об ошибке.

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

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

Тип:Action<T>[CommandAst]
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-CompletionQueryItems

Указывает максимальное количество элементов завершения, отображаемых без запроса.

Если число отображаемых элементов больше этого значения, PSReadLine запрашивает "да/нет " перед отображением элементов завершения.

Тип:Int32
Position:Named
Default value:100
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-ContinuationPrompt

Указывает строку, отображаемую в начале последующих строк при вводе многострочного ввода. Значение по умолчанию — это двойные знаки (>>). Допустимая пустая строка.

Тип:String
Position:Named
Default value:>>
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-DingDuration

Указывает длительность сигнала, если Для BellStyle задано значение Audible.

Тип:Int32
Position:Named
Default value:50ms
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-DingTone

Задает тон в Герце (Гц) звукового сигнала, когда BellStyle имеет значение Audible.

Тип:Int32
Position:Named
Default value:1221
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-EditMode

Задает режим редактирования командной строки. Использование этого параметра сбрасывает все привязки ключей, заданные по параметру Set-PSReadLineKeyHandler.

Допустимы следующие значения.

  • Windows: ключевые привязки эмулируют PowerShell, cmd и Visual Studio.
  • Emacs: ключевые привязки эмулируют Bash или Emacs.
  • Vi: ключевые привязки эмулируют Vi.

Используйте Get-PSReadLineKeyHandler для просмотра ключевых привязок для настроенного в данный момент EditMode.

Тип:EditMode
Position:Named
Default value:Windows
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-ExtraPromptLineCount

Указывает количество дополнительных строк.

Если запрос охватывает несколько строк, укажите значение для этого параметра. Используйте этот параметр, если требуется, чтобы дополнительные строки были доступны, когда PSReadLine отображает запрос после отображения некоторых выходных данных. Например, PSReadLine возвращает список завершения.

Этот параметр требуется меньше, чем в предыдущих версиях PSReadLine, но полезен при InvokePrompt использовании функции.

Тип:Int32
Position:Named
Default value:0
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-HistoryNoDuplicates

Этот параметр управляет поведением отзыва. Повторяющиеся команды по-прежнему добавляются в файл журнала. Если этот параметр задан, при отзыве команд отображается только последнее вызов. Повторяющиеся команды добавляются в журнал для сохранения порядка во время отзыва. Однако обычно вы не хотите видеть команду несколько раз при отзыве или поиске в журнале.

По умолчанию для свойства HistoryNoDuplicates глобального объекта PSConsoleReadLineOptions задано значение True. Чтобы изменить значение свойства, необходимо указать значение SwitchParameter следующим образом: -HistoryNoDuplicates:$False Вы можете вернуться к True использованию только switchParameter, -HistoryNoDuplicates.

С помощью следующей команды можно задать значение свойства напрямую:

(Get-PSReadLineOption).HistoryNoDuplicates = $False

Тип:SwitchParameter
Position:Named
Default value:False
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-HistorySavePath

Указывает путь к файлу, в котором сохраняется журнал. Компьютеры под управлением Windows или не windows хранят файл в разных расположениях. Имя файла хранится в переменной $($Host.Name)_history.txt, например ConsoleHost_history.txt.

Если этот параметр не используется, путь по умолчанию:

$env:APPDATA\Microsoft\Windows\PowerShell\PSReadLine\$($Host.Name)_history.txt

Тип:String
Position:Named
Default value:A file named $($Host.Name)_history.txt in $env:APPDATA\Microsoft\Windows\PowerShell\PSReadLine on Windows and $env:XDG_DATA_HOME/powershell/PSReadLine or $HOME/.local/share/powershell/PSReadLine on non-Windows platforms
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-HistorySaveStyle

Указывает, как PSReadLine сохраняет журнал.

Допустимы следующие значения:

  • SaveIncrementally: сохранение журнала после выполнения каждой команды и совместного использования в нескольких экземплярах PowerShell.
  • SaveAtExit: добавление файла журнала при выходе PowerShell.
  • SaveNothing: не используйте файл журнала.

Примечание.

Если вы установите для HistorySaveStyle SaveNothing значение и установите его SaveIncrementally в дальнейшем в том же сеансе, PSReadLine сохраняет все команды, которые ранее выполнялись в сеансе.

Тип:HistorySaveStyle
Position:Named
Default value:SaveIncrementally
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-HistorySearchCaseSensitive

Указывает, что поиск по журналу учитывает регистр в таких функциях, как ReverseSearchHistory или HistorySearchBackward.

По умолчанию для свойства HistorySearchCaseSensitive для глобального объекта PSConsoleReadLineOptions задано значение False. Использование этого switchParameter задает для свойства значение True. Чтобы изменить значение свойства обратно, необходимо указать значение SwitchParameter следующим образом: -HistorySearchCaseSensitive:$False

С помощью следующей команды можно задать значение свойства напрямую:

(Get-PSReadLineOption).HistorySearchCaseSensitive = $False

Тип:SwitchParameter
Position:Named
Default value:False
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-HistorySearchCursorMovesToEnd

Указывает, что курсор перемещается в конец команд, загруженных из журнала с помощью поиска. Если этот параметр задан $False, курсор остается на месте, когда вы нажимали стрелки вверх или вниз.

По умолчанию для свойства HistorySearchCursorMovesToEnd глобального объекта PSConsoleReadLineOptions задано значение False. Используя этот параметр SwitchParameter , задайте для свойства значение True. Чтобы изменить значение свойства обратно, необходимо указать значение SwitchParameter следующим образом: -HistorySearchCursorMovesToEnd:$False

С помощью следующей команды можно задать значение свойства напрямую:

(Get-PSReadLineOption).HistorySearchCursorMovesToEnd = $False

Тип:SwitchParameter
Position:Named
Default value:False
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-MaximumHistoryCount

Указывает максимальное количество команд для сохранения в журнале PSReadLine .

Журнал PSReadLine отличается от журнала PowerShell.

Тип:Int32
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-MaximumKillRingCount

Указывает максимальное количество элементов, хранящихся в круге убийства.

Тип:Int32
Position:Named
Default value:10
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-PromptText

Этот параметр задает значение свойства PromptText . Значение по умолчанию — "> ".

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

Значение этого параметра может быть одной строкой или массивом двух строк. Первая строка — это часть строки запроса, которую необходимо изменить на красную, когда возникает ошибка синтаксического анализа. Вторая строка — это альтернативная строка, используемая при возникновении ошибки синтаксического анализа.

Тип:String[]
Position:Named
Default value:>
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-ShowToolTips

При отображении возможных завершений подсказки отображаются в списке завершения.

Этот параметр по умолчанию включен. Этот параметр по умолчанию не включен в предыдущих версиях PSReadLine. Чтобы отключить, задайте для этого параметра значение $False.

По умолчанию для свойства ShowToolTips глобального объекта PSConsoleReadLineOptions задано значение True. Использование этого switchParameter задает для свойства значение True. Чтобы изменить значение свойства, необходимо указать значение SwitchParameter следующим образом: -ShowToolTips:$False

С помощью следующей команды можно задать значение свойства напрямую:

(Get-PSReadLineOption).ShowToolTips = $False

Тип:SwitchParameter
Position:Named
Default value:True
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-ViModeChangeHandler

Если задано Scriptзначение ViModeIndicator, предоставленный блок скрипта будет вызываться при каждом изменении режима. Блок скрипта предоставляется один аргумент типа ViMode.

Этот параметр появился в PowerShell 7.

Тип:ScriptBlock
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-ViModeIndicator

Этот параметр задает визуальный индикатор для текущего режима Vi . Режим вставки или режим команд.

Допустимы следующие значения.

  • Нет: нет индикатора.
  • Запрос: запрос изменяет цвет.
  • Курсор: размер курсора изменяется.
  • Скрипт: печатается указанный пользователем текст.
Тип:ViModeStyle
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-WordDelimiters

Задает символы, разделяющие слова для функций, таких как ForwardWord или KillWord.

Тип:String
Position:Named
Default value:;:,.[]{}()/\|^&*-=+'"---
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

Входные данные

None

Невозможно передать объекты в этот командлет.

Выходные данные

None

Этот командлет не возвращает выходные данные.