AI

zoxideの使い方完全ガイド【インストールから応用まで】

zoxideの使い方完全ガイド【インストールから応用まで】

ターミナルでの作業は、私たち開発者にとって日常です。しかし、ディレクトリ間の移動でこんなストレスを感じたことはありませんか?

深い階層のディレクトリに移動するたび、長いパスを何度も入力する。 「あのプロジェクトのあのディレクトリ、どこだっけ?」と、コマンド履歴を遡ったり、ls を繰り返したりする。 頻繁に訪れるディレクトリなのに、毎回フルパスを打ち込むのが面倒。

これらの「小さな」ストレスは、積み重なると開発効率を大きく低下させます。もし、あなたが頭の中で思い描いたディレクトリ名の一部を打ち込むだけで、瞬時にそこに移動できるとしたらどうでしょう?まるで、AIがあなたの思考を読み取って、次にアクセスしたい場所を予測してくれるかのように。

zoxide は、そんな夢のような体験を現実にするCLIツールです。


zoxideとは

zoxide は「スマートな cd コマンド」です。あなたが普段 cd コマンドで移動するディレクトリの履歴を学習し、アクセス頻度や最新の利用状況を基にランキングを付けます。これにより、次に移動したいディレクトリを少ない入力で予測し、瞬時にジャンプできるようになります。

例えば、~/projects/my-awesome-app/src/components という深い階層のディレクトリに移動したい場合、通常の cd ならフルパスを入力するか、タブ補完を何度も使う必要があります。しかし zoxide なら、z components と入力するだけで、最も頻繁に訪れる components ディレクトリに移動できるのです。

このツールは、zautojump といった先行ツールにインスパイアされて誕生しました。それらの利点を引き継ぎつつ、より高速でモダンな設計が特徴です。主要なシェル(Bash, Zsh, Fishなど)に対応しており、どの環境でも快適に利用できます。


インストール方法

zoxide のインストールは非常に簡単です。以下の手順で、あなたの環境に導入しましょう。

インストール後には、シェル設定ファイルに zoxide の初期化スクリプトを追加する必要があります。これを忘れると zoxide は機能しませんので注意してください。

macOSの場合

Homebrewを利用するのが最も簡単です。

brew install zoxide

インストール後、以下のコマンドをシェル設定ファイルに追加します。

# ~/.zshrc または ~/.bashrc に追加
eval "$(zoxide init zsh)" # zshの場合
# または
eval "$(zoxide init bash)" # bashの場合

Linux / WSLの場合

公式が推奨するインストールスクリプトを使用するのが手軽です。

curl -sSfL https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | sh

または、お使いのディストリビューションのパッケージマネージャーを利用することもできます。

Arch Linuxの場合:

sudo pacman -S zoxide

Debian / Devuanの場合:

sudo apt install zoxide

汎用的な方法 (Rust環境がある場合):

cargo install zoxide --locked

インストール後、以下のコマンドをシェル設定ファイルに追加します。

# ~/.zshrc または ~/.bashrc に追加
eval "$(zoxide init zsh)" # zshの場合
# または
eval "$(zoxide init bash)" # bashの場合
# fishの場合 (config.fish に追加)
zoxide init fish | source

Windowsの場合

ScoopやChocolateyといったパッケージマネージャーを利用できます。

Scoopの場合:

scoop install zoxide

Chocolateyの場合:

choco install zoxide

インストール後、PowerShellの場合はプロファイルファイル ($PROFILE) に、WSL (Bash/Zsh) の場合は上記Linuxの指示に従って設定を追加します。

# PowerShellプロファイルファイル ($PROFILE) に追加
Invoke-Expression (& { (zoxide init powershell | Out-String) })

基本的な使い方

zoxide の基本的なコマンドは非常にシンプルです。まずはこれだけ覚えれば、その便利さを実感できるでしょう。

1. z <キーワード>: 最もよく使うディレクトリへジャンプ

これが zoxide の核となる機能です。キーワードを指定すると、zoxide が過去の利用履歴に基づいて最適なディレクトリを判断し、そこに移動します。

# 例えば、~/projects/my-web-app/src に移動したい場合
z src

もし src という名前のディレクトリが複数ある場合、zoxide は最も頻繁に訪れるか、最近訪れた src ディレクトリを選択します。

2. z <キーワード1> <キーワード2>: 複数キーワードで絞り込み

複数のキーワードをスペースで区切って指定することで、より正確なディレクトリにジャンプできます。これは、似たような名前のディレクトリが複数ある場合に特に有効です。

# 例えば、~/projects/my-web-app/backend/api に移動したい場合
z backend api

このコマンドは、「backendapi の両方を含むパスで、最もランクの高いディレクトリ」に移動します。

3. z <パス>: 通常の cd コマンドとして使用

zoxide は、通常の cd コマンドの機能も兼ね備えています。絶対パス、相対パス、チルダ (~) を使ったホームディレクトリ指定も可能です。

# 絶対パスで移動
z /usr/local/bin

# 相対パスで移動
z ../another-dir/sub-dir

# ホームディレクトリ指定
z ~/documents/reports

これにより、cd コマンドの代わりに常に z を使う習慣をつけることができます。

4. z -: 前のディレクトリに戻る

これも cd - と同じ機能です。直前にいたディレクトリに簡単に戻ることができます。

# 現在のディレクトリから別の場所へ移動
z /tmp

# 直前のディレクトリに戻る
z -

5. zi <キーワード>: インタラクティブな選択

zi コマンドは、fzf (Fuzzy Finder) と連携して、インタラクティブにディレクトリを選択できる機能です。キーワードにマッチする複数のディレクトリ候補がある場合、zi を使うと候補リストが表示され、そこから選択して移動できます。

注意: zi を使うには fzf がインストールされている必要があります。fzfbrew install fzf (macOS) や sudo apt install fzf (Linux) などでインストールできます。

# 例えば、複数の "docs" ディレクトリがある場合
zi docs

zi docs を実行すると、docs を含むディレクトリのリストが fzf のインタフェースで表示され、ファジー検索で絞り込みながら目的のディレクトリを選んでEnterキーで移動できます。


便利な使い方・応用例 3選

zoxide は、ただディレクトリ移動を速くするだけでなく、使い方を工夫することで開発ワークフローを大きく改善できます。

1. cd コマンドを z にエイリアスして完全に置き換える

最も強力な使い方の一つは、デフォルトの cd コマンドを z にエイリアスしてしまうことです。これにより、意識することなく常に zoxide の恩恵を受けられます。

# ~/.zshrc または ~/.bashrc に追加
alias cd='z'

この設定をすると、普段通り cd と入力しても、実際には zoxide が動きます。例えば、cd ../ と打てば zoxide が親ディレクトリに移動し、cd myproject と打てば zoxide が最もランクの高い myproject ディレクトリにジャンプします。これにより、従来の cd の機能も保持しつつ、zoxide の学習能力を最大限に活用できます。

さらに、インタラクティブ選択の zi も短縮エイリアスにすると便利です。例えば、jjj などにエイリアスを設定することで、素早くインタラクティブなディレクトリ選択を行えます。

# ~/.zshrc または ~/.bashrc に追加
alias j='zi'
# または
alias jj='zi'

これで、j project と打つだけで、fzf を使ったインタラクティブな選択が可能になります。

2. プロジェクトルートへの高速移動

複数のプロジェクトを並行して作業している開発者にとって、zoxide は非常に役立ちます。例えば、~/dev/project-a~/dev/project-b~/dev/project-c といったディレクトリ構造で作業しているとします。

通常の cd であれば、cd ~/dev/project-a のようにフルパスを入力するか、cd ../../project-a のように相対パスを計算する必要があります。

zoxide を使えば、どのサブディレクトリにいても、プロジェクトのルートに瞬時に戻ることができます。

# 現在 ~/dev/project-a/src/components にいるとする
# プロジェクトルートに戻りたい場合
z project-a

z project-a と入力するだけで、zoxide は最も頻繁に訪れる project-a ディレクトリ(通常はルート)を識別し、そこに移動します。これにより、深い階層から一気にプロジェクト全体を見渡す場所にジャンプする手間が省けます。

3. 曖昧なキーワードでの探索と選択

ディレクトリ名がはっきりしない場合や、複数の似たような名前のディレクトリが存在する場合でも zoxide は強力です。例えば、「データベース関連のファイルが置いてあるディレクトリに行きたいけど、名前が db だったか database だったか data だったか覚えていない」という状況を想像してください。

zoxide は部分一致でディレクトリを検索します。

# "data" というキーワードで最もランクの高いディレクトリへ
z data

# 複数の候補がある場合、インタラクティブに選択
zi data

zi data を実行すれば、datadatabase_data など、キーワードにマッチする全てのディレクトリがリストアップされます。fzf の強力なファジー検索機能により、さらに絞り込みながら目的のディレクトリを素早く見つけ出し、Enterキー一つで移動できます。これは、複雑なプロジェクト構造や、多くのリポジトリを扱う場合に特に威力を発揮します。


他ツールとの組み合わせ

zoxide は単体でも強力ですが、他のツールと組み合わせることでさらにその真価を発揮します。

fzf (Fuzzy Finder) との連携

zi コマンドが機能するためには fzf が必須です。fzf は、コマンドラインで強力なファジー検索とインタラクティブな選択を提供するツールです。zoxide の候補リストを fzf で表示することで、目的のディレクトリをより直感的に、素早く見つけ出すことができます。

まだ fzf をインストールしていない場合は、以下のコマンドで導入しましょう。

macOS:

brew install fzf
$(brew --prefix)/opt/fzf/install

Linux (例: Ubuntu/Debian):

sudo apt install fzf

インストール後、zi <キーワード> を試してみてください。

シェル補完との連携

zoxide は、Bash、Zsh、Fishといった主要なシェルでの補完機能をサポートしています。これは、z <キーワード> と入力した後にTabキーを押すことで、zoxide が学習したディレクトリ候補を表示する機能です。

例えば、z proj と入力してTabキーを押すと、project-aproject-bmy-project といった候補が表示されます。これにより、キーワードを完全に覚えていなくても、補完機能を使って目的のディレクトリにたどり着くことができます。

この機能は、zoxide init コマンドでシェル設定ファイルに追記されたスクリプトによって自動的に有効になります。

ターミナルからGUIファイルマネージャーを開く

zoxide で目的のディレクトリに移動した後、そのディレクトリをGUIのファイルマネージャーで開きたい場合があります。これは、以下のコマンドで簡単に実現できます。

macOS:

z myproject # zoxideで移動
open .      # 現在のディレクトリをFinderで開く

Windows (WSLの場合):

z myproject # zoxideで移動
explorer.exe . # 現在のディレクトリをエクスプローラーで開く

Linux (GNOMEの場合):

z myproject # zoxideで移動
nautilus .  # 現在のディレクトリをNautilusで開く

この連携により、CLIとGUIのメリットを適材適所で活用できます。


よくある設定・カスタマイズ

zoxide は、いくつかの環境変数を設定することで、動作をカスタマイズできます。これらの設定は、シェル設定ファイル(.bashrc.zshrcconfig.fish など)に記述します。

1. zoxide のデータディレクトリの変更

zoxide は、あなたのディレクトリ移動履歴をデータベースファイルとして保存します。デフォルトでは、このファイルは ~/.local/share/zoxide に作成されます。この場所を変更したい場合は、_ZO_DATA_DIR 環境変数を設定します。

# ~/.zshrc または ~/.bashrc に追加
export _ZO_DATA_DIR="$HOME/.config/zoxide"

これにより、zoxide のデータファイルを $HOME/.config の下に集約するなど、dotfiles管理をより整理できます。

2. 履歴の保持期間(最大年齢)の設定

zoxide は、長期間アクセスされていないディレクトリの履歴を自動的に削除し、データベースを最適化します。この「最大年齢」は _ZO_MAXAGE 環境変数で設定できます。単位は日です。

# ~/.zshrc または ~/.bashrc に追加
# 365日以上アクセスされていないディレクトリの履歴を削除する (デフォルトは90日)
export _ZO_MAXAGE="365"

これにより、あまり使わなくなった古いプロジェクトの履歴がデータベースに残るのを防ぎ、検索の精度を維持できます。

3. シンボリックリンクの扱い

zoxide はデフォルトでシンボリックリンクを解決し、実パスを記録します。もしシンボリックリンク自体を独立したディレクトリとして扱いたい場合は、_ZO_RESOLVE_SYMLINKSfalse に設定します。

# ~/.zshrc または ~/.bashrc に追加
export _ZO_RESOLVE_SYMLINKS="false"

この設定は、シンボリックリンクを多用し、そのリンクパス自体に意味を持たせたい場合に有用です。

4. エイリアスの再確認と統一

前述の「cd コマンドを z にエイリアスする」設定は、zoxide を最大限に活用するための基本です。加えて、zi コマンドのエイリアスも設定することで、よりスムーズな操作が可能になります。

# ~/.zshrc または ~/.bashrc に追加
alias cd='z'   # cdコマンドをzoxideに置き換え
alias j='zi'   # ziコマンドをより短いjにエイリアス

これらの設定は、.bashrc.zshrc といったシェル設定ファイルに記述し、シェルを再起動するか source ~/.zshrc などで読み込み直すことで適用されます。dotfilesとしてこれらの設定を管理することで、新しい環境を構築する際にも簡単に zoxide 環境を再現できます。


今日からできる実行プラン

zoxide をあなたの開発ワークフローに導入するのは非常に簡単です。以下の3ステップを今日から実践してみましょう。

ステップ1: zoxide のインストール

まずは、お使いのOSに応じた方法で zoxide をインストールします。

# macOSの場合
brew install zoxide

# Linux / WSL (推奨スクリプト)
curl -sSfL https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | sh

# Windows (Scoopの場合)
scoop install zoxide

ステップ2: シェル設定ファイルの更新

インストールが完了したら、zoxide をあなたのシェルで有効にするための設定を追記します。

# ~/.zshrc または ~/.bashrc に追記
eval "$(zoxide init zsh)" # zshの場合
# または
eval "$(zoxide init bash)" # bashの場合

# fishの場合 (config.fish に追記)
zoxide init fish | source

# PowerShellの場合 ($PROFILE に追記)
Invoke-Expression (& { (zoxide init powershell | Out-String) })

設定を反映させるために、シェルを再起動するか、以下のコマンドを実行します。

source ~/.zshrc # zshの場合
# または
source ~/.bashrc # bashの場合

ステップ3: いつものように cd を使い始める

これで zoxide は準備完了です。特別な操作は必要ありません。普段通り cd コマンドを使ってディレクトリを移動してください。zoxide は、あなたの移動履歴をバックグラウンドで自動的に学習していきます。

数日間 cd を使い続けると、zoxide のデータベースに情報が蓄積されます。その後、以下のコマンドを試してみてください。

z <よく使うディレクトリ名の一部>
zi <よく使うディレクトリ名の一部>

きっと、その瞬時の移動体験に驚くはずです。慣れてきたら、alias cd='z'alias j='zi' といったエイリアス設定も検討し、zoxide をあなたの手足のように使いこなしましょう。

zoxide は、あなたのターミナル作業をより速く、より快適にするための強力な味方です。ぜひ、今日からその恩恵を享受してください。


参考文献

広告

-AI