Usando códigos de escape ANSI no prompt do Powershell para adicionar cor, perde o significado depois de executar alguns processos do console, como git

3

Eu criei um arquivo de configuração do powershell que modifica o prompt para adicionar alguma cor (dependendo de coisas como ramificação do git, etc.)

Isso parece bom, até que eu executei um programa de console, como o git, que também produz texto colorido. Depois disso, parece que Powershell decide produzir códigos de escape textualmente.

Mais fácil de entender com uma captura de tela:

  1. éasaídaantesdeexecutarogit,observeasaídacoloridadotexto"colorized >"
  2. é a saída depois que eu executo o git, percebo que os códigos de escape saem textualmente

Aqui está o meu arquivo de configuração do Powershell:

function prompt {
    "" + [char]0x001b + "[35m colorized >" + [char]0x001b + "[0m"
}

Existe algum truque para reativar a funcionalidade dos códigos ANSI ou isso é apenas uma peculiaridade de como o Powershell ou o git emitem texto? Note que o git é apenas um exemplo, eu encontrei vários programas que bagunçam isso, mas nem todos eles fazem isso.

O MSBuild, por exemplo, funciona bem.

    
por Lasse Vågsæther Karlsen 01.11.2017 / 13:54

1 resposta

1

Oh, ei! Eu me deparei com esse problema quando comecei a colorir TUDO com ANSI.

Primeiro de tudo, eu peguei isso (não lembro como eu tropecei nele inicialmente, mas muito obrigado ao codificador original) link

Em seguida, no meu perfil, tenho certeza de adicioná-lo

Add-Type -Path C:\Users\audaxdreik\Documents\WindowsPowerShell\Console.cs

E então eu crio um wrapper personalizado rápido no meu perfil para programas problemáticos conhecidos que eu uso muito, como o git

$gitPath = (Get-Command -Name git).Source
function git {
    & $gitPath $args
    [Bozho.PowerShell.Console]::EnableVirtualTerminalProcessing()
}
    
por 23.11.2017 / 05:56

Tags