devAlice
← Windows

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

  1. pwsh 7 をインストールwinget install Microsoft.PowerShell
  2. pwsh を Windows Terminal のデフォルトシェルにする
  3. プロファイルを有効化$PROFILE を編集
  4. oh-my-posh — プロンプト(Git ステータス・実行時間・終了コード)
  5. 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 $PROFILE

4. 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 faceJetBrainsMono Nerd Font

4.1 プロファイルに追加

$PROFILE に追記:

# oh-my-posh を有効化
oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH\jandedobbeleer.omp.json" | Invoke-Expression

テーマは好みで選ぶ(jandedobbeleerparadoxnegligiblecraver など)。すべてのテーマは $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 -Force

5.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 CompletionPredictor

6. エイリアス / 関数

自分用のものを $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 に切り替える。

参考リンク

更新履歴

  • 2026-05-12:初稿。pwsh 7 + oh-my-posh + 6 つのモジュール + エイリアス / 関数 + 5 つのトラブルシューティング。