PowerLineを久々試してみたら簡単にPowerShellが見やすくなった

# はじめに

まずPowershellにPowerLineを適用するとどうなるのかですが、

- カレントフォルダ表示がLinux風になる
- コマンド実行時刻が各行表示される
- Gitの情報が常時みれる

過去失敗したけど、今すごく簡単にできたし、
見たい情報がすぐ見れる（＝サボれる）のでオススメです。
![fdsa.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134703/db224e6a-0740-9a59-35c4-1e9afc94bf89.png)

::: note info
2024年現在、@ShortArrow は[Starship](https://starship.rs/)を利用しており、PowerLineを使っていません。
[PSReadLineもオススメ](https://sheepla.github.io/sheepla-note/posts/powershell-customization/)です。
:::

# 今日の午後

SSHの設定方法をMS Docsで読んでいたら、
隣のページにPowerLineが載っているではないですか！
以前やろうとして詰んだ記憶がよみがえります。

試しに再挑戦してみると、出来てしまいました。
「うわ、簡単にできた！これは記事にして広めねば！」。
結果として、意味不明な使命感に燃えております。

# 過去の失敗

- 自機がLinuxやUnixのプログラマーは当たり前のように使っているらしい。
- なんかキレイで見やすいらしい
- PowerLineってのだとPowershellにも適用できるらしいぞ？！

こんな感じの理由から半年前くらいに挑戦したのですが、
全然上手く設定できず、何が間違いなのかも分からず終わりました。

# 適用前

Microsoft-Windows-Terminalで表示していますが、
これが通常のpwshですね。素っ気ないです。
![error.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134703/003c24bb-0c80-98a6-4dbf-350db29dc7a9.png)

# 適用後


とりあえず、「なんか、かっこいい」ってことだけは分かります。

![Untitled.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134703/f431ca0a-8f15-170a-1e4d-dbc7f5e69f27.png)
![ccc.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134703/c540df66-d8d3-861c-7b4e-6c15e11f5b33.png)

# なにが書いてあるの

![fdsa.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134703/db224e6a-0740-9a59-35c4-1e9afc94bf89.png)


この画像に書いてあることを日本語訳すると、

```text
カレントユーザー名@ドメイン名  ホームディレクトリ/ドキュメント/Github用のフォルダ/Githubリポジトリ/testモジュール格納フォルダ　Git絵文字 ブランチ名 ↑未Push変更総数 +ステージ前の追加ファイル数 ~ステージ前の変更ファイル数 -ステージ前の削除ファイル数 | +ステージ前の追加ファイル数 ~ステージ前の変更ファイル数 -ステージ中の削除ファイル数 [当行表示時刻の時:当行表示時刻の分]
```

長すぎて読みにくいので改行すると、こうなります。

```text
カレントユーザー名@ドメイン名 >
    ホームディレクトリ記号/
    ドキュメントフォルダ/
    Github用のフォルダ/
    Githubリポジトリ/
    testモジュール格納フォルダ >
        Git絵文字 ブランチ名
            ↑未Push変更総数
                +ステージ前の追加ファイル数
                ~ステージ前の変更ファイル数
                -ステージ前の削除ファイル数 |
                +ステージ前の追加ファイル数
                ~ステージ前の変更ファイル数
                -ステージ中の削除ファイル数 ! >
                    [当行表示時刻の時:当行表示時刻の分]
```

改めて、コンパクトに魅せることの重要性を思い知らされます。UI/UX!

# どうやってやるの

## Gitを入れておく

やる前に、`git`コマンドが使えるように`Path`環境変数を設定しておいてください。

## PS Gallery からモジュールをインストール

おもむろに Powershell 7 を開いて、下記２行を実行します。

```powershell
Install-Module posh-git -Scope CurrentUser
Install-Module oh-my-posh -Scope CurrentUser
```

Powershell 7 の場合のみ下記1行を実行します。 Powershell 5.1 以前の Powershell の場合はいりません。

```powershell
Install-Module -Name PSReadLine -Scope CurrentUser -Force -SkipPublisherCheck
```

※PSGalleryを信用しますか？とか聞かれます。まあ、信用してあげてください。

## Windows-Terminal で使う

下記コマンドで、カレントユーザーのPowershellプロファイルをメモ帳で開きます。

```powershell
notepad $PROFILE
```

その中に、下記コマンドを書き込みます。

```powershell
Import-Module posh-git
Import-Module oh-my-posh
Set-PoshPrompt Paradox
```

ここまでで、一応使えるようになっています。
VscodeやWindowsTerminalなどで、このプロファイルを開始時に読み込むため、
上記で`import-module`したモジュールが読み込まれます。

## テーマを設定できる

また、上記プロファイルでは、Set-Themeでテーマ設定しています。
[標準で用意されたテーマ](https://ohmyposh.dev/docs/themes)を選択することが出来ます。
fishとか、Operatorとかカッコいいですね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134703/53528b8c-77b4-ed5a-f02a-ec4f1cd6db60.png)
[自作テーマ](https://github.com/JanDeDobbeleer/oh-my-posh#creating-your-own-theme)も使えるらしいです。

# 文字化けを直すためにCascadia Fontsを入れる

しかし、文字化けするので、[Cascadia Fonts](https://github.com/microsoft/cascadia-code/releases) を入れます。この時、`Cascadia .* PL`のように、
末尾にPLが付いているものを必要とします。「Powerline Glyph」の有無が違うらしいです。

[Cascadia Fonts | Github](https://github.com/microsoft/cascadia-code/releases) からダウンロードできます。
手動でインストールする場合には、unzipして、TTFファイルを右クリックしてインストールします。

面倒なので、[Chocolatey](https://chocolatey.org/)コマンドを使い、一発インストールします。

```powershell
choco install cascadiafonts
```

::: note info
2024年現在、@ShortArrow は[Nerdfonts](https://nerdfonts.com/)のに収録のフォントの中からその時の気分で切り替えて使っています。
:::

# Windows-Terminalで文字化けを直す

Fontを入れたら、`"fontFace": "Cascadia Code PL",`という文字列をWindows-Terminalの設定ファイルに書き込みます。

```json-doc
{
    // Make changes here to the powershell.exe profile.
    "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
    "name": "Windows PowerShell",
    "commandline": "powershell.exe",
    "fontFace": "Cascadia Code PL",
    "hidden": false
},
```

こんな感じで、末尾のカンマ`,`に気を付けて記入しましょう。
間違えるとエラーメッセージがでます。

# Vscodeで文字化けを直す

Win:「Ctrl」+「,」、Mac:「⌘」+「,」で設定画面を出し、Font Family の先頭に`cascadia code`を追記します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134703/d904365c-5aa2-0908-bd42-b1943f426944.png)

# 公式

公式にコミットされている人たちに感謝です。
https://docs.microsoft.com/ja-jp/windows/terminal/tutorials/powerline-setup

# 2021/05/07追記

いつの間にかホームページっぽいものができています。[Docusaurus](https://docusaurus.io/)で制作されているっぽいです。

https://ohmyposh.dev

**Excelsior!**