💻
毎日のTerminal操作を快適にするzshrcカスタマイズ
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