A modern directory jumper with a visual-first TUI, built in Zig.
Key Features • Usage • Install • Customize • FAQ
zing learns where you work and lets you jump there instantly. It combines fuzzy matching, frecency scoring (frequency + recency), and an interactive TUI with live preview, tree view, and stats.
Type fragments of a path and zing finds the best match instantly.
Launch zi for a visual selector with live search, preview, and score bars.
Favor both how often and how recently you visit directories.
| Directory | Score | Last Access |
|---|---|---|
~/projects/webapp |
156.2 | 2 min ago |
~/projects/api |
89.4 | 1 hour ago |
~/work/client |
52.1 | 1 day ago |
Jump to a parent, then refine to a child.
z pro /src # -> ~/projects/webapp/srcInspect directory hierarchy and usage trends at a glance.
Four built-in themes: default, nord, dracula, gruvbox.
# Jump to the best match
z foo
# AND search across multiple terms
z foo bar
# Interactive selector (TUI)
zi
zi fooz foo / # enter subdirectory selection
z foo /src # jump to a specific subdirzing add ~/new-project
zing remove ~/old-dir
zing list
zing list --format=json
zing statsbrew tap ydah/zing
brew install zinggit clone https://github.com/ydah/zing.git
cd zing
zig build -Doptimize=ReleaseFast
sudo cp zig-out/bin/zing /usr/local/bin/# bash
source <(zing init bash)
# zsh
eval "$(zing init zsh)"
# fish
zing init fish | source# zoxide
zing import --from=zoxide
# z (rupa/z)
zing import --from=z ~/.z
# autojump
zing import --from=autojumpz "$(zing list --format=text | fzf)"command! -nargs=* Z :cd `zing query <args>`bind-key j display-popup -E "zi"zing config themes
zing config set tui.theme nordDefault path: ~/.config/zing/config.toml (override with ZING_CONFIG).
[general]
data_dir = "~/.local/share/zing"
cmd_alias = "z"
interactive_alias = "zi"
[scoring]
half_life = 604800
match_weight = 1.0
max_score = 1000.0
min_score = 0.01
[matching]
case_sensitivity = "smart"
search_type = "fuzzy"
[tui]
theme = "default"
show_preview = true
show_score_bar = true
highlight_matches = true
[exclude]
patterns = [
"^/tmp",
".*/node_modules/.*",
".*/\\.git/.*",
]| Variable | Description | Default |
|---|---|---|
ZING_DATA_DIR |
Database location | ~/.local/share/zing |
ZING_CONFIG |
Config file path | ~/.config/zing/config.toml |
Check that shell integration is installed:
grep zing ~/.bashrc # or ~/.zshrcAdd it manually once:
zing add /path/to/dirrm ~/.local/share/zing/zing.dbMake sure your terminal supports true color:
echo $COLORTERM| Feature | zing | zoxide | z | autojump |
|---|---|---|---|---|
| Language | Zig | Rust | Shell | Python |
| Interactive TUI | ✅ | fzf-based | ❌ | ❌ |
| Frecency (continuous) | ✅ | ✅ (discrete) | ✅ (discrete) | ❌ |
| Subdirectory jump | ✅ | ✅ | ❌ | ❌ |
| Tree view | ✅ | ❌ | ❌ | ❌ |
| Stats dashboard | ✅ | ❌ | ❌ | ❌ |
| Themes | ✅ | ❌ | ❌ | ❌ |
- Fast: cold start < 10ms, query < 5ms
- Visual-first: live TUI with preview and tree view
- Smart defaults: useful out of the box, zero-config
- Customizable: themes, exclusions, tuning knobs
# Debug build
zig build
# Release build
zig build -Doptimize=ReleaseFast
# Tests
zig build testContributions welcome. See CONTRIBUTING.md for workflow and style.
MIT. See LICENSE.




