最も使用頻度の高いディレクトリを学習し、わずか数回のキーストロークでジャンプできるスマートなcdコマンド。訪問の頻度と最近性を組み合わせた「frecency」アルゴリズムを使用します。
| プラットフォーム | コマンド |
|---|
| macOS (Homebrew) | brew install zoxide |
| Ubuntu/Debian | sudo apt install zoxide |
| Arch Linux | sudo pacman -S zoxide |
| Fedora/RHEL | sudo dnf install zoxide |
| Windows (Winget) | winget install ajeetdsouza.zoxide |
| Windows (Scoop) | scoop install zoxide |
| Windows (Chocolatey) | choco install zoxide |
| Cargo (全プラットフォーム) | cargo install zoxide --locked |
| Conda | conda install -c conda-forge zoxide |
| Nix | nix-env -iA nixpkgs.zoxide |
| インストールスクリプト | curl -sSfL https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | sh |
シェル設定ファイルに適切な行を追加:
| シェル | 設定ファイル | 追加するコマンド |
|---|
| Bash | ~/.bashrc | eval "$(zoxide init bash)" |
| Zsh | ~/.zshrc | eval "$(zoxide init zsh)" |
| Fish | ~/.config/fish/config.fish | zoxide init fish | source |
| PowerShell | プロファイル | Invoke-Expression (& { (zoxide init powershell | Out-String) }) |
| Elvish | ~/.elvish/rc.elv | eval (zoxide init elvish | slurp) |
| Nushell | env.nu | zoxide init nushell | save -f ~/.zoxide.nu |
| Xonsh | ~/.xonshrc | execx($(zoxide init xonsh)) |
| コマンド | 説明 |
|---|
z foo | 「foo」に一致する最高ランクのディレクトリにジャンプ |
z foo bar | 「foo」と「bar」の両方に一致するディレクトリにジャンプ |
z ~/projects | 正確なパスにジャンプ(通常のcdと同様に動作) |
z .. | 1つ上のディレクトリに移動 |
z - | 前のディレクトリに戻る |
zi foo | fzfを使用したインタラクティブな選択(複数の一致がある場合) |
zi | 追跡されたすべてのディレクトリからインタラクティブに選択 |
zoxideはキーワードでディレクトリパスをマッチングします。フルパスを入力する必要はありません:
# 頻繁に/home/user/projects/my-appを訪問する場合
z my-app # 直接そこにジャンプ
z proj app # これも動作(パス内の両方の単語にマッチ)
z app # 最も頻繁な「app」ディレクトリの場合に動作
スコアリング: ディレクトリは訪問時にポイントを獲得します。最近の訪問はより高いスコアを得ます。使用されていないディレクトリは時間とともに減衰します。
| コマンド | 説明 |
|---|
zoxide add /path/to/dir | ディレクトリをデータベースに手動で追加 |
zoxide remove /path/to/dir | ディレクトリをデータベースから削除 |
zoxide edit | データベースを$EDITORで開いて手動編集 |
zoxide query foo | 「foo」の最良の一致を表示(ジャンプせずに) |
zoxide query -l | データベース内のすべてのディレクトリをスコアでソートして表示 |
zoxide query -l foo | 「foo」の全ての一致をスコアと共に表示 |
zoxide query -ls foo | スコアでソートされた一致をスコアと共に表示 |
zoxide query -i foo | インタラクティブ選択モード |
他のディレクトリジャンパーから移行する場合、データベースをインポート:
| コマンド | 説明 |
|---|
zoxide import --from=autojump /path/to/db | autojumpからインポート |
zoxide import --from=z /path/to/db | z/z.shからインポート |
zoxide import --from=fasd /path/to/db | fasdからインポート |
インポートするデフォルトのデータベースの場所:
- autojump:
~/.local/share/autojump/autojump.txt
- z:
~/.z
- fasd:
~/.fasd
| 変数 | デフォルト | 説明 |
|---|
_ZO_DATA_DIR | プラットフォーム固有 | データベースを保存するディレクトリ |
_ZO_ECHO | 0 | ナビゲート前にマッチしたディレクトリを表示(有効化は1) |
_ZO_EXCLUDE_DIRS | なし | 除外するディレクトリ(コロン区切りパス) |
_ZO_FZF_OPTS | なし | インタラクティブモードでfzfに渡すカスタムオプション |
_ZO_MAXAGE | 10000 | データベース内のエントリの最大数 |
_ZO_RESOLVE_SYMLINKS | 0 | パスを保存する前にシンボリックリンクを解決(有効化は1) |
| オプション | 説明 |
|---|
--cmd j | コマンド名をzからjに変更(jとjiを作成) |
--hook prompt | 各プロンプトでスコアを更新(デフォルト) |
--hook pwd | ディレクトリ変更時のみスコアを更新 |
--hook none | スコアを自動更新しない |
--no-cmd | zとziエイリアスを作成しない(__zoxide_zを直接使用) |
# 例:「z」の代わりに「j」を使用し、ディレクトリ変更時のみ更新
eval "$(zoxide init bash --cmd j --hook pwd)"
# ホームディレクトリとtmpを追跡から除外
export _ZO_EXCLUDE_DIRS="$HOME:/tmp:/private/tmp"
# カスタムfzfプレビューを使用
export _ZO_FZF_OPTS="--preview 'eza -la --icons {2..}' --preview-window=right:40%"
# 部分名でプロジェクトディレクトリにジャンプ
z myproject
# 複数のキーワードで曖昧性を解消
z work api # ~/work/projects/api-serverにマッチ
# 確信が持てない場合はインタラクティブモード
zi deploy # 一致するすべてのディレクトリでfzfを開く
# zoxideが最良の一致と判断するものを確認
zoxide query deploy
# 追跡されたすべてのディレクトリとそのスコアを表示
zoxide query -ls
# 削除されたディレクトリをデータベースからクリーンアップ
zoxide query -l | while read -r line; do
dir=$(echo "$line" | awk '{print $2}')
[ ! -d "$dir" ] && zoxide remove "$dir"
done
ziを使用すると、zoxideは自動的にインタラクティブ選択にfzfを使用します。これが動作するためにはfzfをインストールしてください。
zoxideはタブ補完を提供します。シェル統合後、z の後にTabを押すと一致するディレクトリが提案されます。
| 機能 | cd | zoxide (z) |
|---|
| 正確なパスに移動 | cd /full/path | z /full/path |
| 部分一致 | なし | あり(z proj) |
| Frecencyランキング | なし | あり |
| インタラクティブ選択 | なし | あり(zi) |
| 前のディレクトリ | cd - | z - |
| 学習動作 | なし | 使用から学習 |
| データベースインポート | 該当なし | autojump、z、fasd |
| 問題 | 解決策 |
|---|
zコマンドが見つからない | シェル設定にシェル統合行があることを確認し、シェルを再起動 |
| 一致が見つからない | 最初にcdでディレクトリを訪問 — zoxideは時間とともに学習 |
| 間違ったディレクトリがマッチ | より具体的なキーワードを使用:z apiの代わりにz work api |
| データベースが大きすぎる | _ZO_MAXAGEを下げるか、zoxide editを実行してクリーンアップ |