🐚

私のPowerShellプロファイルを紹介する

2024/01/09に公開

序論

過去何回かWindowsでWeb開発する場合のおすすめ初期セットアップについて紹介しました。
https://zenn.dev/yuta28/articles/windows-git-dev

https://zenn.dev/yuta28/articles/windows-development-env

今回は私の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

https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_profiles

Windowsターミナル[4]でPowerShellを起動すると最初にPowerShellプロファイルのスクリプトが起動し、Gitプロンプトの見た目を編集、モジュールのセットアップが行われターミナル操作が楽になります。

My PowerShellプロファイル

本題となる私のPowerShellのプロファイルの中身です。
順番に説明していきますが冗長になりますので下記の目次から気になる部分だけチェックしてみてください。

posh-git

https://github.com/dahlbyk/posh-git

posh-gitは以前の記事でも紹介しましたが、GitとPowerShellを統合したPowerShellモジュールです。Gitのステータス情報をターミナル上に表示してくれるのでブランチ間違いや未pushに気が付きやすくなります。
パッケージマネージャーからposh-gitをインストールすれば自動でプロファイルにインポートモジュールコマンドが追加されるのでユーザーによる操作は不要です。

scoopによるインストール手順
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タブ補完を有効化してくれる手順が紹介されてましたのでこちらを採用しました。
https://dev.classmethod.jp/articles/how-to-set-terraform-autocomplete-on-powershell/

DockerコマンドのPowerShellタブ補完は以下のリポジトリを参考に設定しました。
https://github.com/matt9ucci/DockerCompletion?tab=readme-ov-file#installation

Scoopのタブ補完についても以前私の記事で紹介しましたので、こちらをご覧ください。

リポジトリ管理エイリアスコマンド

GitHubからリポジトリをcloneする際あちらこちらにcloneしてしまうとローカルリポジトリがとっ散らかってしまいどこにあるのか探すのに苦労します。
私はghqを使ってローカルのリポジトリをcloneし管理しています。ghqならどこのパスからcloneしても特定フォルダ内にリポジトリをcloneしてくれます。
さらにpecoと組み合わせて使うことでいつでもローカルリポジトリに移動できるエイリアスコマンドを作りました。

# Alias
function ghcd() {
    Set-Location "$(ghq root)/$(ghq list | peco)"
}


デモ画面

Windowsターミナルカスタマイズ

https://ohmyposh.dev/

oh-my-poshはposh-gitと同様にターミナルの見た目をリッチしてくれるOSSです。
プロファイルにお気に入りのテーマ読み込みを設定しており、こちらも私の以前の記事をご覧いただけると詳細がわかると思います。

Terminal-IconsはVS Codeのようなファイル種類別のアイコンをターミナル上に表示してくれます。


https://github.com/devblackops/Terminal-Icons/blob/main/media/screenshot.png

zoxideを使ったパス移動

https://github.com/ajeetdsouza/zoxide
最後にzoxideを使った快適なパス移動について紹介します。

zoxideはより快適なcdコマンドを目指して作られたRust製のOSSになります。
z <パス名>で部分一致したパスまで一気にジャンプしてくれます。またzi <パス名>なら部分一致でヒットした複数の候補を表示してくれるのでリポジトリ名があいまいでも移動できます。


デモ画面

所感

PowerShellプロファイルについて紹介しました。
冒頭の記事でも紹介したとおり、Windowsでもターミナル操作は非常に進化しており、Macと遜色ないくらい快適にターミナルでPC操作ができるようになりました。
プロファイルをカスタマイズすることでより効率的なターミナル操作が実現できるので自分だけのターミナルをぜひ見つけてみてください。

参考文献

https://qiita.com/FKbelm/items/2edb23d4f57e8c0d4fb4

脚注
  1. https://www.gnu.org/software/bash/ ↩︎

  2. https://www.zsh.org/ ↩︎

  3. https://learn.microsoft.com/ja-jp/powershell/scripting/overview ↩︎

  4. https://learn.microsoft.com/ja-jp/windows/terminal/ ↩︎

  5. https://learn.microsoft.com/ja-jp/powershell/module/psreadline/set-psreadlinekeyhandler?view=powershell-7.4 ↩︎

  6. https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-completion.html#cli-command-completion-windows ↩︎

  7. https://learn.microsoft.com/en-us/cli/azure/install-azure-cli-windows?tabs=azure-cli#enable-tab-completion-in-powershell ↩︎

  8. https://cli.github.com/manual/gh_completion ↩︎

  9. https://developer.hashicorp.com/terraform/cli/commands#shell-tab-completion ↩︎

GitHubで編集を提案

Discussion