今回は、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ターミナルでは、この機能をカラースキーマと呼ぶ。

この連載の記事
-
第508回
PC
Scalable Vector Graphics(SVG)そもそも何なのか? -
第507回
PC
Windows 11の「開発者モード」とは何か? -
第506回
PC
Windows 11は早くも来秋登場の26H2プレビューの準備が始まる -
第505回
PC
結構変化しているWindows 11のエクスプローラーの基本設定を見直す -
第504回
PC
新しいOutlookとOutlook Classic、そろそろ古いOutlookとExchangeの組み合わせは引退の頃合いか -
第503回
PC
機能が増えたこともあり、寄せ集めから統合化に進むWindowsの便利ツール「PowerToys」 -
第502回
PC
Windows 11でBluetoothのオーディオ新規格「Bluetooth LE Audio」を試す -
第501回
PC
Windows 11 Ver.25H2での変更点、新機能を整理する -
第500回
PC
Windows 11 Ver.25H2が完成した -
第499回
PC
Windowsでの致命的だが回復可能なエラーに備える手段を2つ紹介 -
第498回
PC
Windows Terminalの安定版V1.23が公開 設定UIが改良される - この連載の一覧へ












