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


Настройка светлой цветной темы

Цвета по умолчанию для PowerShell и PSReadLine выбираются для темного фонового терминала. Однако некоторые пользователи могут использовать светлый фон с темным текстом. Так как большинство цветов по умолчанию не задают фон, используя светлые цвета переднего плана на светлом фоне, создается непрочитаемый текст.

PSReadLine позволяет определять цвета для 18 различных элементов синтаксиса. Текущие параметры можно просмотреть с помощью командлета Get-PSReadLineOption .

EditMode                               : Windows
AddToHistoryHandler                    : System.Func`2[System.String,System.Object]
HistoryNoDuplicates                    : True
HistorySavePath                        : C:\Users\user1\AppData\Roaming\Microsoft\Wind...
HistorySaveStyle                       : SaveIncrementally
HistorySearchCaseSensitive             : False
HistorySearchCursorMovesToEnd          : False
MaximumHistoryCount                    : 4096
ContinuationPrompt                     : >>
ExtraPromptLineCount                   : 0
PromptText                             : {> }
BellStyle                              : Audible
DingDuration                           : 50
DingTone                               : 1221
CommandsToValidateScriptBlockArguments : {ForEach-Object, %, Invoke-Command, icm...}
CommandValidationHandler               :
CompletionQueryItems                   : 100
MaximumKillRingCount                   : 10
ShowToolTips                           : True
ViModeIndicator                        : None
WordDelimiters                         : ;:,.[]{}()/\|^&*-=+'"-—―
AnsiEscapeTimeout                      : 100
PredictionSource                       : HistoryAndPlugin
PredictionViewStyle                    : InlineView
CommandColor                           : "`e[93m"
CommentColor                           : "`e[32m"
ContinuationPromptColor                : "`e[37m"
DefaultTokenColor                      : "`e[37m"
EmphasisColor                          : "`e[96m"
ErrorColor                             : "`e[91m"
InlinePredictionColor                  : "`e[38;5;238m"
KeywordColor                           : "`e[92m"
ListPredictionColor                    : "`e[33m"
ListPredictionSelectedColor            : "`e[48;5;238m"
MemberColor                            : "`e[97m"
NumberColor                            : "`e[97m"
OperatorColor                          : "`e[90m"
ParameterColor                         : "`e[90m"
SelectionColor                         : "`e[30;47m"
StringColor                            : "`e[36m"
TypeColor                              : "`e[37m"
VariableColor                          : "`e[92m"

Настройки цвета хранятся в виде строк с управляющими последовательностями ANSI, которые изменяют цвет в терминале. С помощью командлета Set-PSReadLineOption можно изменить цвета на значения, которые лучше подходят для светло-цветного фона.

Определение цветов для светлой темы

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

Следующая хеш-таблица определяет цвета для PSReadLine, которые имитируют цвета в PowerShell ISE.

$ISETheme = @{
    Command                  = $PSStyle.Foreground.FromRGB(0x0000FF)
    Comment                  = $PSStyle.Foreground.FromRGB(0x006400)
    ContinuationPrompt       = $PSStyle.Foreground.FromRGB(0x0000FF)
    Default                  = $PSStyle.Foreground.FromRGB(0x0000FF)
    Emphasis                 = $PSStyle.Foreground.FromRGB(0x287BF0)
    Error                    = $PSStyle.Foreground.FromRGB(0xE50000)
    InlinePrediction         = $PSStyle.Foreground.FromRGB(0x93A1A1)
    Keyword                  = $PSStyle.Foreground.FromRGB(0x00008b)
    ListPrediction           = $PSStyle.Foreground.FromRGB(0x06DE00)
    Member                   = $PSStyle.Foreground.FromRGB(0x000000)
    Number                   = $PSStyle.Foreground.FromRGB(0x800080)
    Operator                 = $PSStyle.Foreground.FromRGB(0x757575)
    Parameter                = $PSStyle.Foreground.FromRGB(0x000080)
    String                   = $PSStyle.Foreground.FromRGB(0x8b0000)
    Type                     = $PSStyle.Foreground.FromRGB(0x008080)
    Variable                 = $PSStyle.Foreground.FromRGB(0xff4500)
    ListPredictionSelected   = $PSStyle.Background.FromRGB(0x93A1A1)
    Selection                = $PSStyle.Background.FromRGB(0x00BFFF)
}

Замечание

В PowerShell 7.2 и более поздних версиях вы можете использовать метод FromRGB()$PSStyle для создания ANSI escape-последовательностей нужных цветов.

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

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

Настройка цветовой темы в профиле

Чтобы иметь параметры цвета, которые требуется в каждом сеансе PowerShell, необходимо добавить параметры конфигурации в скрипт профиля PowerShell. Пример см. в разделе "Настройка среды оболочки"

$ISETheme Добавьте переменную и следующую Set-PSReadLineOption команду в профиль.

Set-PSReadLineOption -Colors $ISETheme

Начиная с PowerShell 7.2, PowerShell добавляет цветные выходные данные в интерфейс консоли по умолчанию. Используемые цвета определяются в переменной $PSStyle и предназначены для темного фона. Следующие параметры лучше подходят для терминала со светлым фоном.

$PSStyle.Formatting.FormatAccent       = "`e[32m"
$PSStyle.Formatting.TableHeader        = "`e[32m"
$PSStyle.Formatting.ErrorAccent        = "`e[36m"
$PSStyle.Formatting.Error              = "`e[31m"
$PSStyle.Formatting.Warning            = "`e[33m"
$PSStyle.Formatting.Verbose            = "`e[33m"
$PSStyle.Formatting.Debug              = "`e[33m"
$PSStyle.Progress.Style                = "`e[33m"
$PSStyle.FileInfo.Directory            = $PSStyle.Background.FromRgb(0x2f6aff) +
                                         $PSStyle.Foreground.BrightWhite
$PSStyle.FileInfo.SymbolicLink         = "`e[36m"
$PSStyle.FileInfo.Executable           = "`e[95m"
$PSStyle.FileInfo.Extension['.ps1']    = "`e[36m"
$PSStyle.FileInfo.Extension['.ps1xml'] = "`e[36m"
$PSStyle.FileInfo.Extension['.psd1']   = "`e[36m"
$PSStyle.FileInfo.Extension['.psm1']   = "`e[36m"

Выбор цветов для доступности

Цветовая тема ISE может не работать для пользователей с цветовой слепотой или другими условиями, ограничивающими их способность видеть цвета.

Консорциум World Wide Web Consortium (W3C) содержит рекомендации по использованию цветов для специальных возможностей. Рекомендации по специальным возможностям веб-контента (WCAG) 2.1 рекомендуют, чтобы визуальное представление текста и изображений текста имело коэффициент контрастности не менее 4,5:1. Дополнительные сведения см. в разделе Критерий успеха 1.4.3 контрастности (минимум).

Веб-сайт "Коэффициент контрастности " предоставляет инструмент, который позволяет выбирать цвета переднего плана и фона и измерять контрастность. Это средство можно использовать для поиска сочетаний цветов, которые лучше всего работают для вас.