💻

毎日のTerminal操作を快適にするzshrcカスタマイズ

に公開
2026/02/12

PCを買い替えても迷わない。fzf × ghq × Oh My Zsh で作る最強 .zshrc

普段の開発で、こんな悩みはありませんか?

  • Git ブランチ切り替えが面倒
  • ローカルに clone したリポジトリを探すのに時間がかかる
  • ターミナルの見た目が地味でテンションが上がらない
  • コマンドの typo に気づかず実行してしまう

この記事では、以下のツールを組み合わせて
「速い・見やすい・迷わない」ターミナル環境 を構築します。

  • fzf
  • ghq
  • Oh My Zsh
  • zsh-autosuggestions
  • zsh-syntax-highlighting

最終的に完成する .zshrc は
そのままコピペして使える構成です。


全体構成の考え方

この設定の思想はとてもシンプルです。

ghq      → GitHubリポジトリを一元管理
  ↓
fzf      → インタラクティブに検索・選択
  ↓
Zsh関数  → cd / checkout / code
  ↓
Oh My Zsh → 補完・プロンプト・見た目
  • どこに clone したか覚えない
  • ブランチ名を暗記しない
  • 視覚で判断する

これだけでターミナルのストレスは激減します。


必要なパッケージ

まずはベースとなるツールをインストールします。

brew install ghq fzf zsh-autosuggestions zsh-syntax-highlighting

各ツールの役割

ツール 役割
ghq GitHub リポジトリをローカルで一元管理
fzf 爆速なインタラクティブ検索
zsh-autosuggestions 履歴ベースの自動補完
zsh-syntax-highlighting 入力中コマンドの色分け

ghq の初期設定

ghq で管理する root ディレクトリを指定します。

git config --global ghq.root '~/ghq'

これで clone したリポジトリは次のように整理されます。

~/ghq/github.com/username/repository

「どこに clone したっけ?」問題が完全に消えます。


.zshrc の反映方法

# VSCodeで開く
code ~/.zshrc

# 設定を反映
source ~/.zshrc

完成版 .zshrc

以下が今回の完成形です。

.zshrc
# ============================================================
# Oh My Zsh
# ============================================================

## @doc Oh My Zsh のインストール先ディレクトリを指定します。
export ZSH="$HOME/.oh-my-zsh"

## @doc プロンプトテーマを指定します(agnoster)。
ZSH_THEME="agnoster"

## @doc 読み込む Oh My Zsh プラグイン一覧です。
##      日常的な CLI 操作・補完・生産性向上を目的とした構成です。
plugins=(
  git                  # Git エイリアス & 補完
  z                    # よく使うディレクトリへ高速移動
  fzf                  # fzf 連携
  docker               # Docker コマンド補完
  docker-compose       # Docker Compose 補完
  node                 # Node.js 補完
  npm                  # npm 補完
  pnpm                 # pnpm 補完
  yarn                 # yarn 補完
  brew                 # Homebrew 補完
  vscode               # VSCode 連携
  zsh-autosuggestions  # 入力履歴ベースの補完
  copypath             # カレントディレクトリのパスをクリップボードにコピー
  you-should-use       # よく使うコマンドを提案
  aliases              # 便利なエイリアス集
)

## @doc Oh My Zsh 本体を読み込みます。
source "$ZSH/oh-my-zsh.sh"

## @doc fzf の Zsh 向けキーバインドと補完設定を読み込みます。
##      Homebrew 管理の fzf を想定した公式推奨の初期化方法です。
source <(fzf --zsh)


# ============================================================
# Prompt Customization (agnoster)
# ============================================================

# ------------------------------------------------------------
# Prompt Segment Color Tuning
# ------------------------------------------------------------

prompt_context() {
  prompt_segment black default "endotakumi"
}

## @doc agnoster のディレクトリセグメントを上書き定義します。
##      表示内容(フルパス)はそのままに、背景色を抑えて主張を弱めます。
##      日本語パスを含む場合でも視認性を優先します。
prompt_dir() {
  local dir="${PWD/#$HOME/~}"
  prompt_segment blue white "$dir"
}

# ------------------------------------------------------------
# Git Prompt Color Tuning
# ------------------------------------------------------------

## @doc agnoster の Git ステータス色を落ち着いた配色に調整します。
##      clean / dirty / conflict の主張を弱め、可読性を向上させます。
ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg[cyan]%}"
ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[yellow]%}"
ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$fg[red]%}"
ZSH_THEME_GIT_PROMPT_CONFLICTS="%{$fg[red]%}"

## @doc Git ブランチ名の色をやや暗めに設定します。
##      背景色とのコントラストを調整する目的です。
ZSH_THEME_GIT_PROMPT_BRANCH="%{$fg[blue]%}"

# ============================================================
# Prompt Newline
# ============================================================

## @doc プロンプトの表示を「情報行 + 入力行」の2行構成にします。
##      agnoster テーマが生成した PROMPT の末尾に改行を追加し、
##      コマンド入力欄を次の行へ移動します。
##      既存の agnoster セグメント表示は維持されます。
PROMPT="${PROMPT}"$'\n> '


# ============================================================
# Syntax Highlighting
# ============================================================

## @doc zsh-syntax-highlighting を Homebrew の一般的なパスから読み込みます。
##      Apple Silicon / Intel 両対応(存在する方を優先して source)。
if [ -f /opt/homebrew/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh ]; then
  source /opt/homebrew/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
elif [ -f /usr/local/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh ]; then
  source /usr/local/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
fi


# ============================================================
# Environment
# ============================================================

## @doc デフォルトエディタを指定します。
export EDITOR="vim"

## @doc デフォルトブラウザを指定します。
export BROWSER="google-chrome"

## @doc ロケールを指定します。
export LANG="ja_JP.UTF-8"


# ============================================================
# PATH
# ============================================================

## @doc ユーザー用バイナリディレクトリを PATH に追加します。
export PATH="$HOME/.local/bin:$PATH"

## @doc /usr/local/bin を PATH に追加します(Intel Mac や手動配置向け)。
export PATH="/usr/local/bin:$PATH"


# ============================================================
# Functions
# ============================================================

## @doc git のローカルブランチを fzf で選択して checkout します。
## @param $1 オプション: "-simple" を指定するとログ表示を簡易化します。
sw() {
  if [ "$1" = "-simple" ]; then
    git branch --format="%(refname:short)" |
      fzf --preview='git log --pretty=format:"%h %cd %s" --date=format:"%Y-%m-%d %H:%M " {}' \
          --preview-window=right:70%:wrap \
          --ansi |
      xargs git checkout
  else
    git branch --format="%(refname:short)" |
      fzf --preview='git log --graph --oneline --decorate --color=always {}' \
          --preview-window=right:70%:wrap \
          --ansi |
      xargs git checkout
  fi
}

## @doc ghq 管理下のリポジトリを fzf で選択して、そのディレクトリへ移動します。
cdrepo() {
  local repodir
  repodir=$(ghq list | fzf -1 +m) || return 1
  cd "$(ghq root)/$repodir" || return 1
}

## @doc ghq 管理下のリポジトリを fzf で選択して VSCode で開きます。
coderepo() {
  local repodir
  repodir=$(ghq list | fzf -1 +m) || return 1
  echo "Open VSCode Workspace! : $(ghq root)/$repodir"
  code "$(ghq root)/$repodir"
}


# ============================================================
# Aliases
# ============================================================

## @doc すべての変更を一時コミット(WIP)として保存します。
##      作業途中のスナップショット用途を想定しています。
alias gwip='git add -A && git commit -m "[WIP]"'


# ============================================================
# Notes / Install Memo
# ============================================================

## @doc zsh-you-should-use プラグインの導入メモです(設定ではなく手順)。
##      Oh My Zsh のカスタムプラグイン領域へ clone してから plugins に追加します。
##      ※ このブロックはシェル実行しない(コメント)前提のメモです。
#
# -----
#
# oh-my-zsh
#
# Clone this repository using the following command:
#
# git clone https://github.com/MichaelAquilina/zsh-you-should-use.git \
#   ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/you-should-use
#
# -----
#
# pnpm
#
# Clone this repository using the following command:
#
# git clone --depth=1 https://github.com/ntnyq/omz-plugin-pnpm.git \
#   ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/pnpm
#
# -----
#
# zsh-autosuggestions
#
# Clone this repository using the following command:
#
# git clone https://github.com/zsh-users/zsh-autosuggestions \
#   ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
#

export BROWSER="open -a 'Google Chrome'"


独自コマンド解説

Git ブランチ切り替え(sw)

sw

  • fzf でブランチ一覧を表示
  • 右側にコミットグラフをプレビュー
  • 状態を確認しながら checkout

「どのブランチが新しいか分からない」問題が消えます。


リポジトリ移動(cdrepo / coderepo)

cdrepo
coderepo

  • 数文字入力 → 即移動
  • VSCode 起動までワンステップ

リポジトリ探索の思考コストがゼロになります。


一時コミット(gwip)

gwip
  • 作業途中の退避
  • ブランチ切り替え前
  • pull 前の保険

とにかく「今の状態を保存」したいときに便利です。


視認性の工夫

  • agnoster テーマをベースに配色を落ち着かせる
  • プロンプトを 2 行構成にする
~/project (git:main)
> _

入力位置が常に一定になり、
集中力が切れにくくなります。


なぜこの構成が快適なのか

  • 覚えなくていい
  • 探さなくていい
  • 視覚で判断できる
  • キーボードだけで完結

.zshrc は「毎日使う道具」なので、
少しの改善が大きな時間短縮につながります。


まとめ

fzf × ghq × Oh My Zsh の組み合わせは
一度使うと元に戻れません。

PC を買い替えても、
.zshrc を戻すだけで即戦力。

ターミナルのストレスを減らしたい人には
本気でおすすめです 🚀

Discussion