Powershell (v5.1) の組み込み PSReadLine (v2) モジュールを使用して、Powershell コンソールのテキストの色をカスタマイズしようとしています。
以前のバージョンの PSReadLine では、任意のトークン タイプに対してパラメーターを-Background
指定するだけで済みました。-Foreground
しかし、もはやそうではありません。PSReadLine v2 では、色の動作を定義するために ANSI エスケープ コードの使用が導入されました。これにより柔軟性が大幅に向上すると思いますが、達成しようとすることは非常に複雑です。これらのコードに関するドキュメントはいたるところにあり、ホスト アプリケーションの実装に大きく依存しているため、答えを見つけるのが非常に難しくなっています。
テキストの前景を単純に色付けするのは、次のようなもので (比較的) 簡単です。
set-psreadlineoption -colors @{
CommandColor = "`e[93m"
CommentColor = "`e[32m"
}
ただし、太字、下線、または私が特に興味を持っているもの、背景色、およびこれらの組み合わせなどの装飾を導入したい場合、事態はさらに複雑になります。
SelectionColor
(選択したテキストを異なる背景色で強調表示する)のデフォルト値は です`e[35;43m
。しかし、その大きなヒントは、私が探している構文上の秘密を明らかにするにはまだ十分ではありません。
Set-PSReadLineOptionのドキュメントには、非常に問題なく次のように記載されています。
次のような他のエスケープ シーケンスを指定できます。
256 色
24 ビット色 前
景色、背景、またはその両方
反転、太字
...しかし、例はありません。
前景色と背景色の両方、または色と色付きの装飾のその他の組み合わせを定義するエスケープ コードを指定するにはどうすればよいでしょうか?
これらのエスケープ コードについて学ぶのに役立つソースは次のとおりです 。http://jafrog.com/2013/11/23/colors-in-terminal.html
しかし、私はこれについて頭を完全に包むことができませんでした。
解決済み:
@LotPings に感謝します。私は誤って、エスケープ コードに指定できるオプションの数は決まっていると思い込んでいました。実際には、必要な数 (または目標を達成するために必要な数) を指定できます。たとえば、次のようになります。
$e = [char]0x1b
"$e[38;2;255;128;128;48;2;128;0;255;4mtest$e[0m"
... という単語が生成され、test
前景がピンク、背景が紫で下線が引かれます。それを分解するには: