3

Я создал файл конфигурации powershell, который изменяет подсказку для добавления какого-либо цвета (в зависимости от таких вещей, как git branch и т.д.)

Это выглядит хорошо, пока я не запустил консольную программу, такую как git, которая также выводит цветной текст. После этого кажется, что Powershell решает дословно вывести управляющие коды.

Проще понять с помощью скриншота:

пример вывода

  1. вывод перед запуском git, обратите внимание на цветной вывод текста "colorized>"
  2. это вывод после того, как я запустил git, обратите внимание, что escape-коды выводятся дословно

Вот мой файл конфигурации Powershell:

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

Есть ли хитрость для повторного включения функциональности кодов ANSI, или это всего лишь какая-то особенность того, как Powershell или git выводит текст? Обратите внимание, что git - это всего лишь пример, я нашел несколько программ, которые это испортили, но не все из них.

MSBuild, например, работает просто отлично.

1 ответ1

1

О, эй! Я сам столкнулся с этой проблемой, когда взволнованно начал раскрашивать ВСЕ с помощью ANSI.

Прежде всего, я взял это (не помню, как я наткнулся на него изначально, но большое спасибо оригинальному кодеру) https://github.com/bozho/AnsiColorOut/blob/master/AnsiColorOut/Console.cs

Тогда в моем профиле я обязательно добавлю его

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

А затем я создаю в своем профиле быстрый пользовательский упаковщик для известных проблемных программ, которые я часто использую, а именно git

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .