PowerShellをいじった; 見た目編
人はどうしてこうも無駄なことに時間と労力を費やしてしまうのだろうか.
今回はPowerShellの見た目改善奮闘記です.
1. きっかけ
前回の記事で入れたposh-gitでウハウハしてたら チルダが上付きになっているのにイラっとした.MS ゴシックを使っているのが原因.
ついでに よせばいいのに カラースキームにも関心を持ってしまう.ほんとバカ.
ちなみに上画像はカラースキームの適用後.
2. カラースキーム編
とりあえずググる.ヒットする.
ここからここへ飛んだ.
Introducing the Windows Console Colortool – Windows Command Line Tools For Developers
とりあえずsolarized_darkを当ててみたら大変なことになる.
コマンドが読みづらいし なんならオプション指定が一切見えない.クソ.
ちょくちょく報告されてる.
しゃーないのでOneHalfDarkにした.むしろこっちのほうが低コントラストで好きかもしれない.
でもいまだにオプション指定はクソ読みづらい.
よくよく調べてみると colortools.exeは .itermcolos内で指定されたANSIカラーコードをPowerShellに対して指定してあげているらしい.色番号の対応が難しい.
例えば Show-TMOutputColorコマンドを使うと どんな色が割り当てられているかがわかる.
https://4sysops.com/wiki/change-powershell-console-syntax-highlighting-colors-of-psreadline/
ちなみにこの割り当てはPowerShellのプロパティ内からでもわかる.
構文の解析と色付けはPSReadlineというモジュールで管理されているらしい(直前のリンク参考).
ちなみに PSReadline v 2.0.0だと仕様が違う上に色名表示がバグる.
ParameterColorにはDarkGrayが割り当てられているが この色が背景のBlackと完全に同化していることがわかる.
そこで最初はこのPSReadlineによる色指定で ParameterColor(とついでにOperatorColor)を変えようと思った.このときもv 2.0.0の仕様変更で数分苦しんだ.
Code is not fully compatible with PSReadLine v2.0 · Issue #67 · JanDeDobbeleer/oh-my-posh · GitHub
でもそれってどうなんだろう?と思い直したので(カラースキームはカラースキーム自体の設定で済ませたい的な?) 結局OneHalfDark.itermcolosの DarkGrayに対応するANSIカラー(Ansi 8 Color)を適当に変えた.
これによってDarkGray(DarkGrayとは言っていない)が変わって 結果がこうなる.
やろうと思えばもっと細かい色指定が可能なはずなのでカラースキームオタクの方はぜひ.
2. フォント編
Consolas+MS ゴシックのフォントリンクをやってみたりしたけど スケーリングファクタがよくわからなくなってやめました.
結局普通に源真ゴシック等幅Mediumにしました.
なんかPowerShellにフォントを追加するときはレジストリを編集するとか言われてましたけど UTF-8に設定してるおかげか なにもせずにフォントダイアログに出てきたのでラッキーです.
3. まとめ
わたしって,ほんと,バカ....
おまけ. lsに色を付けてみた
Install-Moduleしてprofileを編集するだけ.