今回は、PowerShellのコマンドラインで使われている構文表示の色指定を変更する方法を解説する。
通常はそのままでも構わないが、ターミナルの背景色などを明るい色にすると、見えづらくなることがある。しかし、その変更が結構面倒なのだ。
現在の設定値は、Get-PSReadLineOptionで得られる。色を変更するには、指定されたキーを持つハッシュテーブルを作り、これをSet-PSReadLineOptionで設定する。色指定にはターミナル標準の16色から8bitカラー、24bit RGBカラーの3種類が利用できるほか、文字属性なども設定が可能だ。
Windowsターミナルの場合、「設定」→「プロファイル」→「既定値」→「外観」→「見分けがつかないテキストの明るさを自動的に調整する」を、「なし」にしないと背景色によっては文字色が正しく表示されないことがある。色が正しく設定されていないと感じたら、この項目をチェックしたほうがいいだろう。
なお、検証は、PowerShell Ver.7.5.0、Windowsターミナル Ver.1.22.11141.0の組み合わせでしている。
色指定を確認する
現在の色指定は、Get-PSReadLineOptionで見ることができる。
コマンド出力の後方にある「CommandColor」から「VariableColor」までが、解析されたコマンドラインの色分けになっている。後述するどのような指定方法を使っても、ここでは、すべてエスケープシーケンスによって「色」(文字色、背景色および文字属性)によって表示される。
このエスケープシーケンスは、SGR(Select Graphic Rendition)と呼ばれ、Escコードと「[」(これをCSIと呼ぶ)から始まり、小文字の「m」で終わる。この間に、数値をセミコロンで区切ったパラメーターが並ぶ。
先頭は必ず属性や色を表すコードで、必要に応じて、RGB値や8bitカラー値などがやはりセミコロンで区切って追加される。なお、複数のコードを同居させることができるため、文字色、背景色、文字属性を1つのSGRシーケンスで表現できる。
なお、エクスケープシーケンス自体は文字列なので、単純な文字列連結によっても複数のコードを指定することが可能だ。
なお、16色カラーの場合、端末側の設定で、色名や色番号はそのままでRGB値を変更することができる。Windowsターミナルでは、この機能をカラースキーマと呼ぶ。

この連載の記事
-
第486回
PC
Excelがあればなんでもできる -
第485回
PC
Windows Subsystem for Linux(WSL)のソースコードが公開された -
第484回
PC
WindowsのコマンドラインでGrapheme Clusterを正しく扱うには -
第483回
PC
Microsoftが作るコンソールエディタがこの時代に復活 -
第482回
PC
WSL(Windows Subsystem for Linux)向けにFedoraディストリビューション登場 -
第481回
PC
Windows 11にそろそろ聞こえる25H2の声 -
第479回
PC
Copilot+ PCで利用できる「Windows Copilot Runtime」を試す ローカル推論用モデル「Phi Silica」とは? -
第478回
PC
Copilot+ PCでNPUを使ってローカル推論 「Windows Copilot Runtime」を試す -
第477回
PC
Windowsで2つの文字列を同時に含むテキストファイルを探す方法を考える -
第476回
PC
さらばSkype! Windows&MSのコミュニケーションアプリの30年 - この連載の一覧へ