ターミナル最強セットアップ完全版2026【eza + bat + fzf + ripgrep + zoxide + atuin + starship】
日々ターミナルと向き合うエンジニアの皆さん。皆さんのターミナル環境は快適ですか? もし「もっと速く」「もっとスマートに」「もっと美しく」と願うなら、この記事がその答えです。
想像してみてください。
ツールがない世界では、ディレクトリ移動はcdコマンドを繰り返す手間がありました。
過去のコマンドを探すには、history | grepで延々とスクロールしていました。
ファイルの中身を見るにも、catでは色がなく、長いファイルは画面を流れていきました。
ファイル検索はgrep -rで時間がかかり、結果も読みにくいものでした。
そして、プロンプトは簡素で、必要な情報が一目で分かりませんでした。
しかし、このターミナル最強セットアップを導入した世界では、すべてが変わります。
数文字打つだけで、頻繁に使うディレクトリへ瞬時に移動できます。 Ctrl-r一発で、膨大な履歴の中から目的のコマンドをあいまい検索し、実行できます。
ファイルを開けば、シンタックスハイライトされた美しいコードが、ページャーで快適に閲覧できます。
プロジェクト全体から目的のコードを、驚くほどの速さで見つけ出せます。
プロンプトは必要な情報をコンパクトに表示し、現在の状況を一目で把握できます。
この変化は、日々の作業効率を劇的に向上させます。 本記事では、これら7つの強力なツールをdotfiles設定込みで一気に導入します。 macOSとLinuxに対応した、コピペで動くシェル設定例を提示します。
このツールの組み合わせが最強な理由
今回紹介するeza、bat、fzf、ripgrep、zoxide、atuin、starshipは、それぞれが単体でも強力です。 しかし、これらを組み合わせることで、ターミナルの操作性は飛躍的に向上します。 各ツールが持つ強みが互いに相乗効果を生み出します。
例えば、fzfはあらゆる入力に対するあいまい検索を可能にします。 zoxideの履歴をfzfでインタラクティブに選択すれば、よりスマートな移動が実現します。 atuinの強化されたシェル履歴をfzfで検索すれば、複雑なコマンドもすぐに見つかります。 ripgrepの高速な検索結果をfzfで絞り込めば、膨大な情報から目的の行を瞬時に特定できます。
このように、各ツールが連携し、あなたのターミナル操作を次のレベルへと引き上げます。 まさに「最強のターミナル環境」と呼ぶにふさわしい組み合わせです。
各ツールの役割と担当領域
それでは、個々のツールがどのような役割を果たすのかを見ていきましょう。 それぞれの機能が、あなたのターミナル体験をどのように変えるかを確認してください。
eza: lsコマンドの代替
ezaは、標準のlsコマンドを置き換える高機能なファイル一覧表示ツールです。
ファイルタイプに応じたカラフルな表示や、Gitの変更状態表示が可能です。
アイコン表示にも対応しており、視覚的に分かりやすいファイル管理をサポートします。
より多くの情報を、より美しく、より直感的に表示できます。
bat: catコマンドの代替
batは、catコマンドの強力な代替品です。
シンタックスハイライト機能を備え、コードを読みやすく表示します。
Gitとの連携により、ファイルの変更箇所をサイドバーに表示できます。
長いファイルの表示時には、自動でページャー(例: less)を使用するため、快適に閲覧できます。
非表示文字の表示機能も持ち、デバッグ作業にも役立ちます。
fzf: あいまい検索の達人
fzfは、汎用的なコマンドラインあいまいファインダーです。 ファイル、ディレクトリ、コマンド履歴、プロセスIDなど、あらゆるリストをインタラクティブに検索できます。 数文字入力するだけで、候補を瞬時に絞り込み、目的のアイテムを選択できます。 シェルスクリプトに組み込むことで、ターミナル作業の幅を大きく広げます。 強力なキーバインドとカスタマイズ性も魅力です。
ripgrep (rg): 超高速ファイル内容検索
ripgrep(rg)は、grepコマンドの高速な代替ツールです。
指定したパターンに一致する行を、再帰的にファイルの中から検索します。
デフォルトで.gitignoreファイルを尊重し、隠しファイルやバイナリファイルを自動でスキップします。
これにより、関連性の高い検索結果を瞬時に得られます。
正規表現のサポートも強力で、複雑なパターン検索も効率的に行えます。
zoxide: スマートなディレクトリ移動
zoxideは、cdコマンドを置き換える「賢いcdコマンド」です。
過去に訪れたディレクトリの履歴と使用頻度を学習します。
数文字の入力で、最も頻繁に使うディレクトリへ瞬時にジャンプできます。
例えば、z fooと入力するだけで、fooを含むディレクトリの中で最もランクの高い場所へ移動します。
あいまいマッチングにも対応し、効率的なディレクトリ移動を実現します。
atuin: 魔法のシェル履歴
atuinは、既存のシェル履歴をSQLiteデータベースに置き換えます。
コマンドの実行時間、終了コード、現在の作業ディレクトリなど、詳細なコンテキストを記録します。 Ctrl-rで呼び出せるフルスクリーン検索UIは、強力な履歴検索を可能にします。
オプションで、暗号化された履歴を複数マシン間で同期する機能も提供します。
これにより、どのマシンからでも、過去のコマンドを素早く見つけ出し、再利用できます。
starship: 究極のシェルプロンプト
starshipは、高速でカスタマイズ可能なシェルプロンプトです。 現在のディレクトリ、Gitの状態、プログラミング言語のバージョンなど、必要な情報を表示します。 表示するモジュールや色、アイコンなどを細かく設定できます。 これにより、一目で現在の作業環境を把握し、効率的に作業を進められます。 複数のシェルに対応しており、どの環境でも一貫したプロンプトを提供します。
実際のワークフロー
これらのツールを組み合わせることで、日々のターミナル作業がどのように変わるかを見てみましょう。 具体的なコマンド例と共に、ステップバイステップで体験できます。
1. 目的のディレクトリへ瞬時に移動する
頻繁にアクセスするプロジェクトディレクトリがあるとします。
例えば、~/projects/my-awesome-projectというパスです。
zoxideを導入していれば、次のように簡単に移動できます。
z project
もし複数の候補がある場合や、よりインタラクティブに選択したい場合は、fzfと連携します。
zi project
これで、projectを含むディレクトリのリストがfzfのUIで表示され、あいまい検索で絞り込み、Enterで選択できます。
2. ファイル一覧を美しく確認する
現在のディレクトリにあるファイルを確認したい場合、ezaを使用します。 ファイルタイプに応じた色分けやアイコン表示で、視覚的に情報が得られます。
eza -lah --git --icons
このコマンドは、隠しファイルを含め、詳細なリスト形式でGitの状態やアイコンと共に表示します。
3. ファイルの内容をシンタックスハイライトで閲覧する
コードファイルや設定ファイルの内容を確認する際は、batが活躍します。
例えば、main.pyというファイルの内容を見たい場合です。
bat main.py
コードがシンタックスハイライトされ、Gitの変更点も表示されます。 長いファイルであれば、自動でページャーが起動し、上下スクロールで快適に閲覧できます。
4. プロジェクト全体からコードを高速検索する
大規模なプロジェクトで、特定の関数名や文字列を探す場合、ripgrepが非常に強力です。
例えば、handle_requestという文字列を検索するとします。
rg "handle_request"
ripgrepは.gitignoreを考慮し、高速に検索結果を返します。
さらに、fzfと組み合わせることで、検索結果から目的の行へ直接ジャンプできます。
rg "handle_request" | fzf --preview 'bat --color always --style=numbers --highlight-line {2} {1}' --preview-window=right:wrap:hidden --delimiter : --nth 3..
このコマンドは、handle_requestを含む行を検索し、その結果をfzfで表示します。
fzfのプレビュー機能で、選択した行を含むファイルがbatで表示され、該当行がハイライトされます。
5. 過去のコマンドを瞬時に呼び出す
以前実行した複雑なコマンドを再利用したい場合、atuinの履歴検索が便利です。Ctrl-rを押すだけで、atuinのフルスクリーン検索UIが起動します。
あいまい検索でコマンドの一部を入力すると、関連する履歴が瞬時に表示されます。
例えば、「docker」と入力すれば、過去のDocker関連コマンドが一覧表示されます。
そのままEnterを押せばコマンドが実行され、Tabを押せば編集モードに入ります。
特定のセッションやディレクトリに限定して検索することも可能です。
設定ファイル・dotfilesの例
ここでは、macOS/Linux環境で動作する、コピペ可能なシェル設定例を提示します。
Homebrewを利用したインストールと、.zshrcまたは.bashrcへの追記を想定しています。
Nerd Fontのインストールも推奨します。
1. Nerd Fontのインストール(推奨)
starshipなどで美しいアイコンを表示するために、Nerd Fontのインストールを強く推奨します。
例えば、FiraCode Nerd Fontをインストールする場合です。
brew tap homebrew/cask-fonts
brew install --cask font-firacode-nerd-font
インストール後、使用しているターミナルエミュレータ(iTerm2, Alacritty, VS Code Terminalなど)の設定で、このフォントを適用してください。
2. 各ツールのインストール
Homebrewを使用すると、macOSとLinux (Linuxbrew) の両方で簡単にインストールできます。
# Homebrewがインストールされていない場合は、先にインストールしてください
# /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# ezaのインストール
brew install eza
# batのインストール
brew install bat
# fzfのインストール
brew install fzf
# fzfのキーバインドと補完を有効化するために、追加でスクリプトを実行
$(brew --prefix)/opt/fzf/install
# ripgrepのインストール
brew install ripgrep
# zoxideのインストール
brew install zoxide
# atuinのインストール
brew install atuin
# starshipのインストール
brew install starship
3. シェル設定 (.zshrcまたは.bashrc)
以下の内容を.zshrcまたは.bashrcの末尾に追記してください。
使用しているシェルに合わせて、適切なファイルを編集します。 ~/.bashrcまたは~/.zshrcを編集後、source ~/.bashrcまたはsource ~/.zshrcで設定を反映するか、ターミナルを再起動してください。
# ==============================================================================
# ターミナル最強セットアップ by machijunblog.com
# ==============================================================================
# ------------------------------------------------------------------------------
# Starship (プロンプト)
# ------------------------------------------------------------------------------
# シェルのプロンプトをカスタマイズします。
# 必ず他の設定より前に読み込むことを推奨します。
if command -v starship &> /dev/null; then
eval "$(starship init $(basename $(readlink /proc/$$/exe) 2>/dev/null || echo $SHELL))"
fi
# ------------------------------------------------------------------------------
# eza (lsの代替)
# ------------------------------------------------------------------------------
# lsコマンドをezaに置き換えるエイリアスを設定します。
if command -v eza &> /dev/null; then
alias ls='eza --icons --git'
alias ll='eza -l --icons --git'
alias la='eza -a --icons --git'
alias lla='eza -la --icons --git'
alias tree='eza --tree --level=2' # 簡易的なtreeコマンド
fi
# ------------------------------------------------------------------------------
# bat (catの代替)
# ------------------------------------------------------------------------------
# catコマンドをbatに置き換えるエイリアスを設定します。
if command -v bat &> /dev/null; then
alias cat='bat --paging=never'
alias less='bat' # lessもbatで開くようにする
fi
# ------------------------------------------------------------------------------
# ripgrep (高速検索)
# ------------------------------------------------------------------------------
# rgコマンドはエイリアスなしでそのまま強力です。
# デフォルトで一部のファイルをスキップする設定例
# export RIPGREP_CONFIG_PATH="$HOME/.config/ripgrep/ripgrep.conf"
# ~/.config/ripgrep/ripgrep.conf に --max-columns=120 など記述可能
# ------------------------------------------------------------------------------
# zoxide (スマートなcd)
# ------------------------------------------------------------------------------
# zoxideの初期化スクリプトを読み込みます。
if command -v zoxide &> /dev/null; then
eval "$(zoxide init $(basename $(readlink /proc/$$/exe) 2>/dev/null || echo $SHELL))"
fi
# ------------------------------------------------------------------------------
# atuin (シェル履歴の強化)
# ------------------------------------------------------------------------------
# atuinの初期化スクリプトを読み込みます。
if command -v atuin &> /dev/null; then
eval "$(atuin init $(basename $(readlink /proc/$$/exe) 2>/dev/null || echo $SHELL))"
# atuinのCtrl-rキーバインドを有効化 (fzfと競合する場合は調整が必要です)
# Bashの場合
if [ -n "$BASH_VERSION" ]; then
bind '"\C-r": "\C-a\C-e atuin search -- \C-u\C-y\C-h\C-h\C-h\C-y\C-x\C-r"'
fi
# Zshの場合 (atuin initが自動で設定することが多い)
# zshの場合、atuin initが適切にキーバインドを設定します。
# 競合する場合は ~/.config/atuin/config.toml でキーバインドを調整してください。
fi
# ------------------------------------------------------------------------------
# fzf (あいまい検索)
# ------------------------------------------------------------------------------
# fzfのキーバインドと補完を有効にします。
# Homebrewでfzfをインストールした際に実行される `install` スクリプトで設定されますが、
# 明示的に読み込むことでより確実になります。
if [ -f "$(brew --prefix)/opt/fzf/shell/key-bindings.bash" ]; then
source "$(brew --prefix)/opt/fzf/shell/key-bindings.bash"
fi
if [ -f "$(brew --prefix)/opt/fzf/shell/completion.bash" ]; then
source "$(brew --prefix)/opt/fzf/shell/completion.bash"
fi
if [ -f "$(brew --prefix)/opt/fzf/shell/key-bindings.zsh" ]; then
source "$(brew --prefix)/opt/fzf/shell/key-bindings.zsh"
fi
if [ -f "$(brew --prefix)/opt/fzf/shell/completion.zsh" ]; then
source "$(brew --prefix)/opt/fzf/shell/completion.zsh"
fi
# fzfのための環境変数設定 (オプション)
# FZF_DEFAULT_OPTS='--layout=reverse --height=40% --info=inline --border'
# export FZF_DEFAULT_COMMAND='rg --files --hidden --ignore-file .git/info/exclude'
# export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"
# export FZF_ALT_C_COMMAND='eza -D --icons --git'
# export FZF_PREVIEW_COMMAND='bat --color=always --style=header,numbers,changes {}'
# atuinとfzfのCtrl-r競合対策 (どちらか一方を選ぶか、キーバインドを変更する)
# atuinを優先する場合、fzfのCtrl-rを無効にするか、別のキーに割り当てます。
# 例えば、fzfのCtrl-rを無効にするには、~/.fzf.bash / ~/.fzf.zsh の該当行をコメントアウトするか、
# FZF_CTRL_R_OPTS="" を設定します。
4. Starshipの設定 (~/.config/starship.toml)
starshipのプロンプトをカスタマイズするには、~/.config/starship.tomlファイルを作成します。
以下はシンプルな設定例です。
# ~/.config/starship.toml
# プロンプトの全体的な表示設定
format = """$directory$git_branch$git_status$cmd_duration$line_break$character"""
# ディレクトリ表示
[directory]
truncation_length = 3
truncate_to_repo = false
format = "[$path]($style) "
style = "bold blue"
# Gitブランチ表示
[git_branch]
symbol = " "
format = "[$symbol$branch]($style) "
style = "bold purple"
# Gitステータス表示
[git_status]
format = "[$all_status$ahead_behind]($style) "
style = "bold green"
# コマンド実行時間表示
[cmd_duration]
min_time = 1_000 # 1秒以上かかったコマンドのみ表示
format = "[$duration]($style) "
style = "bold yellow"
# プロンプトの最後の文字
[character]
success_symbol = "[➜](bold green)"
error_symbol = "[✗](bold red)"
この設定は、現在のディレクトリ、Gitブランチ、Gitステータス、コマンド実行時間を表示します。starship documentationでさらに詳細なカスタマイズが可能です。
よくあるトラブルと解決法
新しいツールを導入する際には、いくつかの問題に直面することがあります。 ここでは、よくあるトラブルとその解決法を紹介します。
1. Starshipのアイコンが表示されない
トラブル: プロンプトに絵文字のようなアイコンが表示されず、豆腐(□)になる。原因: Nerd Fontが正しくインストールされていないか、ターミナルエミュレータに設定されていない。解決法:
- Nerd Fontのインストールを確認: 上記の「Nerd Fontのインストール」セクションを参考に、対応するフォントをインストールします。
- ターミナル設定を確認: 使用しているターミナルエミュレータ(iTerm2, Alacritty, VS Code Terminalなど)のフォント設定を開き、インストールしたNerd Font(例:
FiraCode Nerd Font)を適用してください。
2. fzfとatuinのCtrl-rキーバインドが競合する
トラブル: Ctrl-rを押すと、fzfの履歴検索とatuinの履歴検索のどちらかが意図せず起動する。原因: どちらのツールもCtrl-rをデフォルトの履歴検索キーに設定しているため、競合が発生します。解決法:
- atuinを優先する場合:
~/.zshrcまたは~/.bashrcでfzfのCtrl-r関連のキーバインドをコメントアウトするか、FZF_CTRL_R_OPTS=""を設定して無効にします。atuinのCtrl-rはそのまま使用します。 - fzfを優先する場合:
~/.config/atuin/config.tomlでatuinのctrl-rキーバインドを別のキー(例:ctrl-p)に変更します。# ~/.config/atuin/config.toml [atuin] # キーバインドを変更する例 # キーバインドの詳細はAtuinのドキュメントを参照 # search_key = "ctrl-r" # デフォルト # search_key = "ctrl-p" # 例: Ctrl-pに変更
3. zoxideがディレクトリを記憶しない/機能しない
トラブル: zコマンドを使用しても、期待通りにディレクトリにジャンプできない。原因: zoxideの初期化スクリプトが正しく読み込まれていない可能性があります。解決法:
- シェル設定を確認:
.zshrcまたは.bashrcにeval "$(zoxide init ...)"の行が正しく追記されているか確認します。 - シェルを再起動: 設定を反映するために、
source ~/.zshrcまたはsource ~/.bashrcを実行するか、ターミナルを完全に再起動します。 - ディレクトリを訪れる: zoxideはディレクトリを訪れることで学習します。
cdコマンドでいくつかのディレクトリに移動してから、zコマンドを試してみてください。
4. atuinの履歴同期がうまくいかない
トラブル: 複数マシン間でatuinの履歴が同期されない。原因: atuinの同期設定が不完全か、認証情報が正しくない。解決法:
- 初期設定を確認: 各マシンで
atuin registerでユーザー登録し、atuin loginでログインしているか確認します。 - 設定ファイルを確認:
~/.config/atuin/config.tomlにサーバーURLや認証情報が正しく設定されているか確認します。 - 手動同期を試す:
atuin syncコマンドを手動で実行し、エラーメッセージを確認します。 - ファイヤーウォール: ネットワークのファイヤーウォールがatuinサーバーへの接続をブロックしていないか確認します。
今日からできる実行プラン
ターミナル最強セットアップを始めるための3つのステップです。 いますぐ実行して、快適なターミナル環境を手に入れましょう。
ステップ1: Homebrewをインストールする
まだHomebrewをインストールしていない場合は、最初にHomebrewを導入してください。 macOSでもLinuxでも、これ一つで多くのツールを簡単に管理できます。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
ステップ2: 各ツールをインストールする
Homebrewを使って、本記事で紹介した全てのツールを一括でインストールします。 Nerd Fontのインストールも忘れずに行いましょう。
# Nerd Fontのインストール (推奨)
brew tap homebrew/cask-fonts
brew install --cask font-firacode-nerd-font # 例: FiraCode Nerd Font
# 各ツールのインストール
brew install eza bat fzf ripgrep zoxide atuin starship
# fzfのキーバインドと補完を有効化
$(brew --prefix)/opt/fzf/install
ステップ3: 設定ファイルをコピペしてシェルを再起動する
本記事で提示した「設定ファイル・dotfilesの例」セクションの内容を、あなたの.zshrcまたは.bashrcに追記してください。
また、~/.config/starship.tomlも作成しましょう。
設定を保存したら、シェルを再起動するか、source ~/.zshrc(または.bashrc)を実行して変更を適用します。
これで、あなたのターミナルは生まれ変わります。 各ツールの機能を試しながら、さらに自分好みにカスタマイズしていくのも楽しみの一つです。 快適なターミナルライフをお楽しみください!
関連ページ
参考文献
- eza GitHub Repository
- bat GitHub Repository
- fzf GitHub Repository
- ripgrep GitHub Repository
- zoxide GitHub Repository
- atuin GitHub Repository
- starship GitHub Repository
- Homebrew公式サイト
- Nerd Fonts公式サイト