Как раскрасить подсказку Powershell?

Я всегда стараюсь быть таким цветом в моем LinuxЗатем я могу найти свой ввод в черном командном окне. Но можем ли мы сделать такой же цвет в моем Powershell?

1 ответ

Решение

PowerShell предлагает

Что вы хотите сделать, это настроить подсказку.

Приглашение по умолчанию в PowerShell 3.0 и новее:

function prompt  
{  
    "PS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) "  
}

Последовательности выхода цвета

Теперь Windows 10 поддерживает управляющие коды ANSI в своем conhost, а 24-битный цвет поддерживается с 1703 года.

Чтобы использовать один из управляющих кодов ANSI, нам нужен буквальный символ ESC. Это восьмеричный 033 или десятичный 27. В Bash вы бы использовали "\033" или же "\e"; В PowerShell нет прямой эквивалентной последовательности, но вместо этого вы можете встроить выражение: "$([char]27)"


Использовать в PowerShell

Это означает, что вы можете, например, использовать следующую escape-последовательность, чтобы установить цвет фона на голубой с кодом 46:

"$([char]27)[46m"

Который можно использовать так:

echo "$([char]27)[46mColoured text"

Чтобы сделать вещи более читабельными, давайте определим переменную:

$ESC = [char]27

Таким образом, мы можем использовать:

"$ESC[46m"

куда $ESC это буквальный символ ESC, [ определяет начало списка параметров и m конец.

Используя это в команде:

echo "$ESC[46mColoured text"

И чтобы восстановить исходные настройки цвета, мы используем код 0 вместо:

echo "$ESC[46mColoured text$ESC[0mUncoloured text"

Более продвинутые цвета

Если вас не устраивает базовая 16-цветная палитра, вы можете использовать полные 24-битные цвета с формой:

"$ESC[48;2;<r>;<g>;<b>m"

куда <r> является десятичным значением для красного от 0 до 255, <g> для зеленого и <b> для синего, например "$ESC[48;2;255;0;123m"

Пожалуйста, обратитесь к документации для получения дополнительной информации.

На самом деле, все это прямо эквивалентно тому, что вы делаете в bash, за исключением того, что вам нужно использовать $ESC (после того как вы определили это) вместо \e или же \033,


Настройка цветной подсказки

Собрав их вместе, мы можем использовать escape-коды цвета ANSI в измененном приглашении, чтобы изменить цвет фона:

function prompt  
{  
    $ESC = [char]27
    "$ESC[46mPS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) $ESC[0m"  
}

Упорство

Если вы хотите, чтобы это сохранялось между сеансами, добавьте его в свой профиль (например, .bashrc). Вы можете просмотреть путь к своему профилю в $profile,

Другие вопросы по тегам