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


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

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

Начиная с PowerShell 7.2, PowerShell добавляет цветные выходные данные в интерфейс консоли по умолчанию. Эта $PSStyle функция не поддерживается в Windows PowerShell по умолчанию. Однако с помощью модуля PSStyle из коллекции PowerShell можно задать значения цвета с помощью этих методов, описанных в этой статье.

Используемые цвета определяются в переменной $PSStyle и предназначены для темного фона. Эти цвета можно изменить, чтобы лучше работать для светлого фонового терминала.

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)
}

Замечание

Вы можете использовать метод FromRGB() для создания escape-последовательностей ANSI для нужных цветов. Дополнительные сведения см. в $PSStyleabout_ANSI_Terminals. Дополнительные сведения о escape-последовательностях ANSI см. в статье escape-код ANSI в Википедии.

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

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

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

Set-PSReadLineOption -Colors $ISETheme

Следующие параметры лучше подходят для терминала со светлым фоном.

$PSStyle.Formatting.FormatAccent       = $PSStyle.Foreground.Green
$PSStyle.Formatting.TableHeader        = $PSStyle.Foreground.Green
$PSStyle.Formatting.ErrorAccent        = $PSStyle.Foreground.Cyan
$PSStyle.Formatting.Error              = $PSStyle.Foreground.Red
$PSStyle.Formatting.Warning            = $PSStyle.Foreground.Yellow
$PSStyle.Formatting.Verbose            = $PSStyle.Foreground.Yellow
$PSStyle.Formatting.Debug              = $PSStyle.Foreground.Yellow
$PSStyle.Progress.Style                = $PSStyle.Foreground.Yellow
$PSStyle.FileInfo.Directory            = $PSStyle.Background.FromRgb(0x2f6aff) +
                                         $PSStyle.Foreground.BrightWhite
$PSStyle.FileInfo.SymbolicLink         = $PSStyle.Foreground.Cyan
$PSStyle.FileInfo.Executable           = $PSStyle.Foreground.BrightMagenta
$PSStyle.FileInfo.Extension['.ps1']    = $PSStyle.Foreground.Cyan
$PSStyle.FileInfo.Extension['.ps1xml'] = $PSStyle.Foreground.Cyan
$PSStyle.FileInfo.Extension['.psd1']   = $PSStyle.Foreground.Cyan
$PSStyle.FileInfo.Extension['.psm1']   = $PSStyle.Foreground.Cyan

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

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

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

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