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


Set-PSReadLineOption

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

Синтаксис

Set-PSReadLineOption
   [-EditMode <EditMode>]
   [-ContinuationPrompt <String>]
   [-HistoryNoDuplicates]
   [-AddToHistoryHandler <System.Func`2[System.String,System.Object]>]
   [-CommandValidationHandler <System.Action`1[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>]
   [-PredictionSource <PredictionSource>]
   [-PredictionViewStyle <PredictionViewStyle>]
   [-Colors <Hashtable>]
   [<CommonParameters>]

Описание

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

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

Примеры

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

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

Set-PSReadLineOption -Colors @{ "Comment"="`e[32;47m" }

Вы можете задать только цвет текста переднего плана. Например, яркий зеленый цвет текста переднего плана для маркера комментария: "Comment"="`e[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 задает ключи и значения. использует ключи и значения с для обновления параметров 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 "`e[1 q"
    } else {
        # Set the cursor to a blinking line.
        Write-Host -NoNewLine "`e[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. Это имеет тот же эффект, что и возврат перечисления SkipAddingAddToHistory. Если команда не начинается с 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

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

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

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

Добавлены два параметра цвета для поддержки настройки ListView в PSReadLine 2.2.0:

  • ListPredictionColor — задайте цвет для начальных > символов и конечных исходных имен, таких как [History]. По умолчанию он использует DarkYellow в качестве цвета переднего плана.

  • ListPredictionSelectedColor — задать цвет для указания выбранного элемента списка. По умолчанию он использует DarkBlack в качестве цвета фона.

  • Цвет 256

  • 24-разрядный цвет

  • Передний план, фон или оба

  • Обратный, полужирный

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

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

  • ContinuationPrompt: цвет запроса продолжения.
  • выделение: цвет выделения. Например, соответствующий текст при поиске в журнале.
  • ошибка: цвет ошибки. Например, в запросе.
  • выделение: цвет выделения меню или выделенного текста.
  • по умолчанию: цвет маркера по умолчанию.
  • примечания: цвет маркера комментария.
  • ключевое слово: цвет маркера ключевого слова.
  • строка: цвет токена строки.
  • оператор : цвет маркера оператора.
  • переменной: цвет маркера переменной.
  • команда: цвет маркера команды.
  • параметр: цвет маркера параметра.
  • Тип: цвет маркера типа.
  • число: цвет маркера числа.
  • член: цвет маркера имени члена.
  • InlinePrediction: цвет встроенного представления прогнозного предложения.
  • ListPrediction: цвет для ведущего > символа и имени источника прогнозирования.
  • ListPredictionSelected: цвет выбранного прогноза в представлении списка.
Тип: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

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

По умолчанию свойство объекта PSConsoleReadLineOptions HistoryNoDuplicates имеет значение . Чтобы изменить значение свойства, необходимо указать значение 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.

Если этот параметр не используется, путь по умолчанию выглядит следующим образом:

Windows

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

, отличных от Windows

  • $env:XDG_DATA_HOME/powershell/PSReadLine/$($Host.Name)_history.txt
  • $HOME/.local/share/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: не используйте файл журнала.

Заметка

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

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

-HistorySearchCaseSensitive

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

По умолчанию свойство HistorySearchCaseSensitive для глобального объекта PSConsoleReadLineOption s имеет значение . Использование этого 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

-PredictionSource

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

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

  • None — отключите прогнозную функцию IntelliSense (по умолчанию).
  • журнал — включите функцию прогнозного intelliSense и используйте журнал PSReadLine в качестве единственного источника.
  • подключаемый модуль — включите функцию прогнозного intelliSense и используйте подключаемые модули (CommandPrediction) в качестве единственного источника. Это значение было добавлено в PSReadLine 2.2.0
  • HistoryAndPlugin — включите прогнозную функцию IntelliSense и используйте журнал и подключаемый модуль в качестве источников. Это значение было добавлено в PSReadLine 2.2.0
Тип:Microsoft.PowerShell.PredictionSource
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-PredictionViewStyle

Задает стиль для отображения прогнозного текста. Значение по умолчанию — InlineView.

  • InlineView - стиль, как существующий сегодня, как и в рыбной оболочке и zsh. (по умолчанию)
  • ListView — предложения отображаются в раскрывающемся списке, и пользователи могут выбрать UpArrow и DownArrow.

Этот параметр был добавлен в PSReadLine 2.2.0

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

-PromptText

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

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

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

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

-ShowToolTips

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

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

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

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

(Get-PSReadLineOption).ShowToolTips = $False

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

-ViModeChangeHandler

Если для 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

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