Я пытаюсь использовать встроенный модуль PSReadLine (v2) Powershell (v5.1) для настройки цветов текста консоли Powershell.
Предыдущие версии PSReadLine позволяли вам просто указывать параметры -Background
и -Foreground
для любого данного типа токена. Но это уже не так. PSReadLine v2 представил использование управляющих кодов ANSI для определения поведения цвета. Я понимаю, что это обеспечивает большую гибкость, но это чрезвычайно сложно для достижения цели. Документация по этим кодам повсеместна и сильно зависит от реализации хост-приложения, что делает поиск ответов намного труднее.
Простое окрашивание текста на переднем плане (относительно) легко с чем-то вроде:
set-psreadlineoption -colors @{
CommandColor = "`e[93m"
CommentColor = "`e[32m"
}
Однако все становится сложнее, если вы хотите добавить оформление, такое как жирный шрифт, подчеркивание или особый интерес для меня, цвет фона и их комбинации.
Значением по умолчанию для SelectionColor
(которое выделяет выделенный текст другим цветом фона) является `e[35;43m
. Но этого большого намека все еще недостаточно, чтобы раскрыть синтаксические секреты, которые я ищу.
Документ для Set-PSReadLineOption очень просто заявляет:
Вы можете указать другие escape-последовательности, включая:
256 цветов
24-битный цвет
Передний план, фон или оба
Обратный, жирный
... но не приводит примеров.
Как бы вы указали escape-код, который определяет цвет переднего плана и фона, или любую другую комбинацию цветов и цветных украшений?
Источники, которые я нашел полезными при изучении этих escape-кодов:
http://jafrog.com/2013/11/23/colors-in-terminal.html
https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_parameters
Но я не смог полностью обернуть голову вокруг всего этого.
Решено:
Благодаря @LotPings. Я ошибочно полагал, что escape-коды могут иметь только заданное количество опций. По правде говоря, я могу указать столько, сколько захочу (или столько, сколько мне нужно для достижения моих целей). Так, например:
$e = [char]0x1b
"$e[38;2;255;128;128;48;2;128;0;255;4mtest$e[0m"
... приведет к слову test
, которое подчеркнуто розовым передним планом и фиолетовым фоном. Чтобы сломать это: