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


Set-PSReadLineOption

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

Синтаксис

Set-PSReadLineOption
   [-EditMode <EditMode>]
   [-ContinuationPrompt <string>]
   [-HistoryNoDuplicates]
   [-AddToHistoryHandler <Func[string,Object]>]
   [-CommandValidationHandler <Action[CommandAst]>]
   [-HistorySearchCursorMovesToEnd]
   [-MaximumHistoryCount <int>]
   [-MaximumKillRingCount <int>]
   [-ShowToolTips]
   [-ExtraPromptLineCount <int>]
   [-DingTone <int>]
   [-DingDuration <int>]
   [-BellStyle <BellStyle>]
   [-CompletionQueryItems <int>]
   [-WordDelimiters <string>]
   [-HistorySearchCaseSensitive]
   [-HistorySaveStyle <HistorySaveStyle>]
   [-HistorySavePath <string>]
   [-AnsiEscapeTimeout <int>]
   [-PromptText <string[]>]
   [-ViModeIndicator <ViModeStyle>]
   [-ViModeChangeHandler <scriptblock>]
   [-PredictionSource <PredictionSource>]
   [-PredictionViewStyle <PredictionViewStyle>]
   [-Colors <hashtable>]
   [-TerminateOrphanedConsoleApps]
   [<CommonParameters>]

Описание

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

Параметры, заданные этой командой, применяются только к текущему сеансу. Чтобы сохранить любые параметры, добавьте их в скрипт профиля. Дополнительные сведения см. в разделе 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 задает ключи и значения. 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 "`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.
Type:Func<T,TResult>[System.String,System.Object]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-AnsiEscapeTimeout

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

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

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

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

Type:Int32
Position:Named
Default value:100
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-BellStyle

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

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

  • Audible: Короткий сигнал.
  • Визуальный элемент: текст мигает кратко.
  • Нет: нет отзывов.
Type:BellStyle
Position:Named
Default value:Audible
Required:False
Accept pipeline input:False
Accept wildcard characters: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-последовательности, включая следующие типы:

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

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

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

  • Цвет 256

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

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

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

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

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

  • ContinuationPrompt: цвет запроса продолжения.
  • Выделение: цвет выделения. Например, соответствующий текст при поиске в журнале.
  • Ошибка: цвет ошибки. Например, в запросе.
  • Выделение: цвет для выделения выделенного меню или выделенного текста.
  • По умолчанию: цвет маркера по умолчанию.
  • Примечание. Цвет маркера комментария.
  • Ключевое слово: цвет маркера ключевое слово.
  • Строка: цвет токена строки.
  • Оператор: цвет маркера оператора.
  • Переменная: цвет маркера переменной.
  • Команда: цвет маркера команды.
  • Параметр: цвет маркера параметра.
  • Тип: цвет маркера типа.
  • Число: цвет маркера числа.
  • Член: цвет маркера имени члена.
  • InlinePrediction: цвет встроенного представления прогнозного предложения.
  • ListPrediction: цвет для имени ведущего > символа и источника прогнозирования.
  • ListPredictionSelected: цвет выбранного прогноза в представлении списка.
Type:Hashtable
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-CommandValidationHandler

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

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

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

Type:Action<T>[CommandAst]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-CompletionQueryItems

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

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

Type:Int32
Position:Named
Default value:100
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ContinuationPrompt

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

Type:String
Position:Named
Default value:>>
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DingDuration

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

Type:Int32
Position:Named
Default value:50ms
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DingTone

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

Type:Int32
Position:Named
Default value:1221
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-EditMode

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

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

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

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

Type:EditMode
Position:Named
Default value:Windows
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ExtraPromptLineCount

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

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

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

Type:Int32
Position:Named
Default value:0
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-HistoryNoDuplicates

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

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

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

(Get-PSReadLineOption).HistoryNoDuplicates = $False

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters: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
Type: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
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-HistorySaveStyle

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

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

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

Примечание.

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

Type:HistorySaveStyle
Position:Named
Default value:SaveIncrementally
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-HistorySearchCaseSensitive

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

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

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

(Get-PSReadLineOption).HistorySearchCaseSensitive = $False

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-HistorySearchCursorMovesToEnd

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

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

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

(Get-PSReadLineOption).HistorySearchCursorMovesToEnd = $False

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-MaximumHistoryCount

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

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

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-MaximumKillRingCount

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

Type:Int32
Position:Named
Default value:10
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-PredictionSource

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

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

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

-PredictionViewStyle

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

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

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

Type:Microsoft.PowerShell.PredictionViewStyle
Position:Named
Default value:InlineView
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-PromptText

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

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

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

Type:String[]
Position:Named
Default value:>
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ShowToolTips

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

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

Этот параметр и параметр были добавлены в PSReadLine 2.3.4.

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

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

(Get-PSReadLineOption).ShowToolTips = $False

Type:SwitchParameter
Position:Named
Default value:True
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-TerminateOrphanedConsoleApps

Этот параметр задает для параметра TerminateOrphanedConsoleApps значение $true.

В Windows при нажатии клавиш CTRL+c для завершения процесса каждый процесс, подключенный к консоли, получает сигнал завершения, а не только активную оболочку. Иногда, когда оболочка запустила большое дерево дочерних процессов (представьте, что система сборки, например) некоторые процессы могут выйти, оставляя несколько процессов одновременно пытаясь использовать входные данные консоли.

При задании параметра $trueTerminateOrphanedConsoleApps значение PSReadLine записывает список процессов, которые в настоящее время подключены к консоли. После этого при каждом запуске PSReadLine он получит новый список процессов, подключенных к консоли, и завершит работу тех, которые не указаны в исходном списке.

Этот параметр и параметр были добавлены в PSReadLine 2.3.4.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ViModeChangeHandler

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

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

Type:ScriptBlock
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ViModeIndicator

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

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

  • Нет: нет индикатора.
  • Запрос: запрос изменяет цвет.
  • Курсор: размер курсора изменяется.
  • Скрипт: печатается указанный пользователем текст.
Type:ViModeStyle
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WordDelimiters

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

Type:String
Position:Named
Default value:;:,.[]{}()/\|^&*-=+'"---
Required:False
Accept pipeline input:False
Accept wildcard characters:False

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

None

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

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

None

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