私のPowerShellプロファイルを紹介する
序論
過去何回かWindowsでWeb開発する場合のおすすめ初期セットアップについて紹介しました。
今回は私のWindowsPCに設定しているPowerShellプロファイルの設定について紹介していきます。
対象読者
- Windowsを普段使う
- Windows Terminalを普段使う
プロファイルについて
Macを使っている人ならシェルをbash[1]かzsh[2]にしているかと思います。ホームディレクトリに~/.bashrc
か~/.zshrc
を作成し、シェルを起動時に独自変数の読み込みやコマンドラインタブ補完コマンドを有効化して開発生産性を高める人も多いでしょう。
ターミナル起動時にシェルを実行し、シェル環境をカスタマイズできるファイルがプロファイルです。
Windowsは標準でPowerShell[3]を使っており、PowerShellのプロファイルは$PROFILE
変数で簡単に呼び出せます。
ls $PROFILE
Directory: C:\Users\yuta_\OneDrive\Documents\PowerShell
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2023/08/30 8:09 2905 Microsoft.PowerShell_profile.ps1
Windowsターミナル[4]でPowerShellを起動すると最初にPowerShellプロファイルのスクリプトが起動し、Gitプロンプトの見た目を編集、モジュールのセットアップが行われターミナル操作が楽になります。
My PowerShellプロファイル
本題となる私のPowerShellのプロファイルの中身です。
順番に説明していきますが冗長になりますので下記の目次から気になる部分だけチェックしてみてください。
posh-git
posh-gitは以前の記事でも紹介しましたが、GitとPowerShellを統合したPowerShellモジュールです。Gitのステータス情報をターミナル上に表示してくれるのでブランチ間違いや未pushに気が付きやすくなります。
パッケージマネージャーからposh-gitをインストールすれば自動でプロファイルにインポートモジュールコマンドが追加されるのでユーザーによる操作は不要です。
scoop bucket add extras
scoop install posh-git
PowerShellのデフォルトのコマンドタブ補完は少々使いにくいのでSet-PSReadLineKeyHandler
モジュール[5]でタブ補完モードを変更します。
私はzshのタブ補完が気に入っているのでzshライクなタブ補完にしました。
タブ補完
7行目から55行目まではツール特化のタブ補完になります。基本的に公式サイトドキュメント[6][7][8]に記載されている手順をそのままコピーしました。ただいくつかのツールは残念ながら公式ではbashかzshしか対応しておりません。[9]
Terraformのタブ補完はクラスメソッドさんの記事にPowerShell向けのTerraformタブ補完を有効化してくれる手順が紹介されてましたのでこちらを採用しました。
DockerコマンドのPowerShellタブ補完は以下のリポジトリを参考に設定しました。
Scoopのタブ補完についても以前私の記事で紹介しましたので、こちらをご覧ください。
リポジトリ管理エイリアスコマンド
GitHubからリポジトリをcloneする際あちらこちらにcloneしてしまうとローカルリポジトリがとっ散らかってしまいどこにあるのか探すのに苦労します。
私はghqを使ってローカルのリポジトリをcloneし管理しています。ghqならどこのパスからcloneしても特定フォルダ内にリポジトリをcloneしてくれます。
さらにpecoと組み合わせて使うことでいつでもローカルリポジトリに移動できるエイリアスコマンドを作りました。
# Alias
function ghcd() {
Set-Location "$(ghq root)/$(ghq list | peco)"
}
デモ画面
Windowsターミナルカスタマイズ
oh-my-poshはposh-gitと同様にターミナルの見た目をリッチしてくれるOSSです。
プロファイルにお気に入りのテーマ読み込みを設定しており、こちらも私の以前の記事をご覧いただけると詳細がわかると思います。
Terminal-IconsはVS Codeのようなファイル種類別のアイコンをターミナル上に表示してくれます。
https://github.com/devblackops/Terminal-Icons/blob/main/media/screenshot.png
zoxideを使ったパス移動
最後にzoxideを使った快適なパス移動について紹介します。
zoxideはより快適なcdコマンドを目指して作られたRust製のOSSになります。
z <パス名>
で部分一致したパスまで一気にジャンプしてくれます。またzi <パス名>
なら部分一致でヒットした複数の候補を表示してくれるのでリポジトリ名があいまいでも移動できます。
デモ画面
所感
PowerShellプロファイルについて紹介しました。
冒頭の記事でも紹介したとおり、Windowsでもターミナル操作は非常に進化しており、Macと遜色ないくらい快適にターミナルでPC操作ができるようになりました。
プロファイルをカスタマイズすることでより効率的なターミナル操作が実現できるので自分だけのターミナルをぜひ見つけてみてください。
参考文献
-
https://learn.microsoft.com/ja-jp/powershell/scripting/overview ↩︎
-
https://learn.microsoft.com/ja-jp/powershell/module/psreadline/set-psreadlinekeyhandler?view=powershell-7.4 ↩︎
-
https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-completion.html#cli-command-completion-windows ↩︎
-
https://learn.microsoft.com/en-us/cli/azure/install-azure-cli-windows?tabs=azure-cli#enable-tab-completion-in-powershell ↩︎
-
https://developer.hashicorp.com/terraform/cli/commands#shell-tab-completion ↩︎
Discussion