ちょっと見栄えのいいPowerShellにした
これはシェルスクリプト&PowerShell Advent Calendar 2023の20日目です。
毎日見るものだから見栄えをよくしよう
Windowsで色々作業しているとPowerShellを触ることも多いですが、デフォルトだとそんなに使いやすくもないイメージです。
どうせなら見栄えを良くしたほうが気分がいいのでカスタマイズしました。
ついでに色々設定を変えて操作感の向上もしました。
設定してみてわかったメリット、デメリット
メリット
- 見栄えがいい(重要!!)
- 別途コマンドを叩かなくても得られる情報が増える
- 慣れ親しんだ(個人差あり)Emacs風キーバインドで操作できる
- 凝ったプロンプトを設定したのでローカルかsshした先かぱっと見でわかるようになった(想定外のメリット)
デメリット
- 起動に少し時間がかかるようになった
どうなったか
こうなりました。
見た目
Windows Terminal
Windows11を使っていればWindows Terminalは標準でインストールされていると思います。
Windows10でもMicrosoft Storeかwingetをつかってインストールできると思います。
フォント
見た目を変える前に対応したフォントを使うように変更しましょう。
nerd fontに対応したものであれば何でもいいと思います。いくつかリストアップしてみますので好みで選ぶといいです。
自分はHackGen Console NFを使用しています。
Windows Terminalでは以下の箇所から設定を変更できます。
プロファイル(今回の場合PowerShell)→追加の設定→外観→フォントフェイス
Oh My Posh
フォントを変えたらプロンプトの見た目を変え始めましょう。
使うツールとしてはOh My Poshを使用します。
Windows環境ではインストール方法としてwingetかscoopが推奨されているので、今回はwingetを使用します。
まずは素の状態のPowerShellの環境で以下のコマンドを実行します。
winget install JanDeDobbeleer.OhMyPosh -s winget
インストールが終わったらOh My Poshを使用する設定を追加します。
$PROFILE
を開いて以下の内容を追記します。
# メモ帳で開く
notepad $PROFILE
# VSCodeで開く
code $PROFILE
# $PROFILEに以下を追記
oh-my-posh init pwsh | Invoke-Expression
追記したら一旦Terminalを再起動します。
Theme
標準で上記リンクのテーマがインストールされています。
以下のコマンドでテーマのプレビューができます。
Get-PoshThemes
見た目が好きなテーマを適用するためには、以下のように$PROFILE
を修正しましょう。
# $PROFILEに追記した部分を以下のように修正
oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH/${テーマの名前}.omp.json" | Invoke-Expression
操作面
見た目を変えたので少し操作感の部分にも手を加えてみましょう。
まず、以下の内容を$PROFILE
に追記します。
Import-Module PSReadLine
自分はEmacsキーバインドに慣れているのでbashやzshのようにEmacs風キーバインドが使えるように設定を変更します。
Set-PSReadlineOption -EditMode Emacs
# Ctrl-D でDeleteには標準でならないので別途設定
Set-PSReadlineKeyHandler -Key Ctrl+D -Function DeleteChar
macOSではopen
コマンドでfinderでファイルやフォルダを開けて便利なのでそこを少し真似ます。
Set-Alias open Invoke-Item
設定ファイル
最終的に自分は以下のように$PROFILE
を設定しています。
あまり凝ったことをしているわけではないのでシンプルになっています。
oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH/tokyo.omp.json" | Invoke-Expression
Import-Module PSReadLine
Set-PSReadlineOption -EditMode Emacs
Set-PSReadlineKeyHandler -Key Ctrl+D -Function DeleteChar
Set-Alias open Invoke-Item
使ってみて
テーマによって表示される情報は異なりますが、自分が使ってるTokyoテーマではコマンドの実行にかかった時間、メモリ使用量、日付、Gitの状態、aws-cliのプロファイルが表示できます。
PSReadLineの機能でhistoryからコマンドの履歴を表示できるので何度も同じコマンドを実行する際に便利になりました。
Emacs風キーバインドが使えるようになったことでbashなどと同じように使用することができます。
正直使いにくいイメージがあったPowerShellですが、少しずつ使いやすくする手助けができればと思います。
Discussion