PowerShell 7 + oh-my-posh + モジュール — Windows Terminal で週 1 時間を節約する
Windows Terminal の日常ドライバー PowerShell 7 環境 — pwsh インストール・プロファイル・oh-my-posh テーマ・6 つの必須モジュール。
Windows 組み込みの PowerShell 5.1 はクロスプラットフォームではなく、モジュール互換性の問題を抱えている。**PowerShell 7(pwsh)**が標準だ。oh-my-posh と 6 つのモジュールを組み合わせれば、macOS の zsh + starship と同等かそれ以上の環境になる。
このガイドは、Windows 初期セットアップ で winget をインストールした後に行う 30 分の PowerShell セットアップだ。
TL;DR
- pwsh 7 をインストール —
winget install Microsoft.PowerShell - pwsh を Windows Terminal のデフォルトシェルにする
- プロファイルを有効化 —
$PROFILEを編集 - oh-my-posh — プロンプト(Git ステータス・実行時間・終了コード)
- 6 つのモジュール — Terminal-Icons / posh-git / PSReadLine / z / PSFzf / CompletionPredictor
前提条件
- winget が使用可能な Windows 10/11(Windows 初期セットアップ)
- Windows Terminal インストール済み(winget または MS Store)
- Nerd Font(oh-my-posh のグリフ表示用)
1. PowerShell 7 のインストール
winget install --id Microsoft.PowerShell -e新しいタブを開いて pwsh を実行。確認:
$PSVersionTable.PSVersion
# Major: 7, Minor: 4+2. pwsh をデフォルトシェルにする
Windows Terminal → Settings(Ctrl+,)→ Startup:
- Default profile:PowerShell(7)— 濃い青アイコン(5.1 ではない方)
3. プロファイルのセットアップ
# プロファイルファイルのパス
$PROFILE
# C:\Users\me\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
# 存在しない場合は作成
if (-not (Test-Path $PROFILE)) { New-Item -Type File -Path $PROFILE -Force }
# 編集
notepad $PROFILE
# または
code $PROFILE4. oh-my-posh のインストール
winget install JanDeDobbeleer.OhMyPosh -s winget新しいターミナルでテーマをプレビュー:
Get-PoshThemes矢印や ∋ や実行時間が四角で表示される場合は Nerd Font が不足している:
- JetBrainsMono Nerd Font または
oh-my-posh font install JetBrainsMono - Windows Terminal → Settings → Profile → Appearance → Font face:
JetBrainsMono Nerd Font
4.1 プロファイルに追加
$PROFILE に追記:
# oh-my-posh を有効化
oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH\jandedobbeleer.omp.json" | Invoke-Expressionテーマは好みで選ぶ(jandedobbeleer、paradox、negligible、craver など)。すべてのテーマは $env:POSH_THEMES_PATH にある。
5. 6 つのモジュール
# まとめてインストール
Install-Module -Name Terminal-Icons, posh-git, PSReadLine, z, PSFzf -Scope CurrentUser -Force
Install-Module -Name CompletionPredictor -AllowPrerelease -Scope CurrentUser -Force5.1 プロファイルへの登録
$PROFILE 内に:
# 5.1 Icons(ls 出力にファイルタイプアイコン)
Import-Module Terminal-Icons
# 5.2 posh-git(プロンプトに Git ステータス)
Import-Module posh-git
# oh-my-posh テーマにすでに git ステータスがある場合、重複する可能性あり。どちらか一方を選ぶ。
# 5.3 PSReadLine(bash スタイルキー・履歴・補完カラー)
Import-Module PSReadLine
Set-PSReadLineOption -PredictionSource HistoryAndPlugin
Set-PSReadLineOption -PredictionViewStyle ListView
Set-PSReadLineKeyHandler -Chord Tab -Function Complete # bash スタイル
# 5.4 z(よく使うディレクトリにジャンプ — 'z proj')
Import-Module z
# 5.5 PSFzf(Ctrl+R 履歴、Ctrl+T ファイル検索)
Import-Module PSFzf
Set-PsFzfOption -PSReadlineChordProvider 'Ctrl+t' -PSReadlineChordReverseHistory 'Ctrl+r'
# fzf 本体:winget install junegunn.fzf
# 5.6 CompletionPredictor(コマンドベースのタブ予測)
Import-Module CompletionPredictor6. エイリアス / 関数
自分用のものを $PROFILE に追記:
# ls の代替(UNIX フレンドリー)
Set-Alias ll Get-ChildItem
function la { Get-ChildItem -Force @args }
# プロファイルの即時リロード
function reload-profile { . $PROFILE }
# 管理者シェルを即座に開く
function admin { Start-Process pwsh -Verb RunAs }
# Git ショートカット
function gs { git status -sb }
function gd { git diff $args }
function gpl { git pull --rebase --autostash }
# WSL クイックアクセス
function w { wsl @args }7. 検証
# プロファイルをリロード
. $PROFILE
# 1. oh-my-posh プロンプト — Git リポジトリに cd してブランチを確認
cd C:\Users\me\Documents\my-repo
# 2. PSReadLine — 上矢印で履歴を確認、入力してグレーの候補 → → キーで承認
git st<→ キー> # 'status' が予測されるか?
# 3. z — 過去に訪れたフォルダにジャンプ
z my-repo
# 4. Ctrl+R — インタラクティブな履歴検索(fzf)
# 5. ll — Terminal-Icons でカラフルな lsトラブルシューティング
oh-my-posh がアイコンの代わりに四角を表示する
Nerd Font が適用されていない。Windows Terminal → Settings → Profile → Appearance → Nerd Font を設定する。
Install-Module でパーミッションエラー
- 初回:
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned -Scope CurrentUserを省略すると管理者確認が出ることがある
プロファイルが読み込まれない
pwshと Windows Terminal で PowerShell 5.1(powershell.exe)を起動した場合でプロファイルパスが異なる- 5.1:
~/Documents/WindowsPowerShell/Microsoft.PowerShell_profile.ps1 - 7:
~/Documents/PowerShell/Microsoft.PowerShell_profile.ps1 $PSVersionTable.PSVersionで確認
posh-git が遅い(大規模リポジトリ)
大規模モノリポでは git status のたびに遅くなる。oh-my-posh テーマにすでに git セグメントがある場合、posh-git を無効にするか $GitPromptSettings.EnableFileStatus = $false を設定する。
Ctrl+R が動かない
fzfが未インストール —winget install junegunn.fzf- PSFzf はインストール済みだが
fzf.exeが PATH にない
グレースケールの色しか出ない
Windows Terminal のカラースキームが間違っている。Settings → スキームを Campbell または One Half Dark に切り替える。
参考リンク
- Windows 初期セットアップ — winget の事前セットアップ
- WSL2 チューニング — Linux シェル(zsh)
- oh-my-posh(公式)
- PowerShell Gallery — モジュール検索
更新履歴
- 2026-05-12:初稿。pwsh 7 + oh-my-posh + 6 つのモジュール + エイリアス / 関数 + 5 つのトラブルシューティング。