Partilhar via


Configurando um tema de cor clara

As cores padrão para PowerShell e PSReadLine são selecionadas para um terminal de plano de fundo escuro. No entanto, alguns utilizadores podem optar por usar um fundo claro com texto escuro. Como a maioria das cores padrão não define o plano de fundo, usar cores claras de primeiro plano em um plano de fundo claro produz texto ilegível.

A partir do PowerShell 7.2, o PowerShell adiciona saída colorida à experiência de console padrão. A $PSStyle funcionalidade não está disponível nativamente no Windows PowerShell. No entanto, usando o módulo PSStyle da PowerShell Gallery, pode definir valores de cor usando as mesmas técnicas descritas neste artigo.

As cores usadas são definidas na variável $PSStyle e são projetadas num fundo escuro. Podes mudar estas cores para funcionar melhor num terminal de fundo claro.

PSReadLine permite definir cores para 18 elementos de sintaxe diferentes. Você pode exibir as configurações atuais usando o Get-PSReadLineOption cmdlet.

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"

As configurações de cor são armazenadas como strings contendo sequências de escape ANSI que alteram a cor no seu terminal. Usando o Set-PSReadLineOption cmdlet, você pode alterar as cores para valores que funcionem melhor para um plano de fundo de cor clara.

Definição de cores para um tema de luz

O ISE do PowerShell pode ser configurado para usar um tema leve para os painéis do editor e do console. Você também pode exibir e alterar as cores que o ISE usa para vários tipos de sintaxe e saída. Você pode usar essas opções de cores para definir um tema semelhante para PSReadLine.

A hashtable seguinte define cores para PSReadLine que imitam as cores do 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)
}

Observação

Podes usar o FromRGB() método para criar as sequências de escape ANSI para as cores que queres. Para obter mais informações sobre $PSStyle, consulte about_ANSI_Terminals. Para obter mais informações sobre sequências de escape ANSI, consulte o código de escape ANSI artigo na Wikipedia.

Definir o tema de cores no seu perfil

Para ter as configurações de cor desejadas em cada sessão do PowerShell, você deve adicionar as definições de configuração ao seu script de perfil do PowerShell. Para obter um exemplo, consulte Personalizando seu ambiente de shell

Adicione a $ISETheme variável e o seguinte Set-PSReadLineOption comando ao seu perfil.

Set-PSReadLineOption -Colors $ISETheme

As configurações a seguir funcionam melhor para um terminal de fundo claro.

$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

Escolher cores para acessibilidade

O tema de cor ISE pode não funcionar para utilizadores com daltonismo ou outras condições que limitem a sua capacidade de ver cores.

O World Wide Web Consortium (W3C) tem recomendações para o uso de cores para acessibilidade. As Web Content Accessibility Guidelines (WCAG) 2.1 recomendam que "a apresentação visual de texto e imagens de texto tenha uma relação de contraste de pelo menos 4,5:1." Para obter mais informações, consulte Critério de sucesso 1.4.3 Contraste (mínimo).

O Contrast Ratio website fornece uma ferramenta que permite escolher cores de primeiro plano e plano de fundo e medir o contraste. Você pode usar essa ferramenta para encontrar combinações de cores que funcionem melhor para você.