A blazing-fast directory jumper written in Rust. fj helps you navigate your filesystem efficiently using multithreaded fuzzy search and a clean TUI.
- Fast: Powered by multithreading and the
skimfuzzy matching algorithm. - Smart: Respects
.gitignoreand hidden files (viaignorecrate). - Interactive: Clean TUI using
ratatuiandcrossterm. - Simple: Type
fj->Enter->start typingto search for directories.
If you have the Rust toolchain installed, this is the easiest method
cargo install fast-jumpDownload the latest release from the Releases page. Extract the archive and move the fj binary to any directory in your $PATH (e.g., ~/.local/bin or /usr/local/bin).
git clone github.com/Kandarp05/fast-jump
cd fast-jump
cargo install --path .Important
Because fj runs as a child process, it cannot natively alter the working directory of your parent shell. To automatically cd into your selected directory, you must use a shell wrapper.
Ensure the fj executable is in your $PATH, then add the following function to your shell configuration file (~/.bashrc or ~/.zshrc).
fj() {
local target_dir
target_dir="$(command fj "$@")" || return
[[ -n "$target_dir" && -d "$target_dir" ]] && builtin cd -- "$target_dir"
}Note
The script above is written for POSIX-compliant shells. If you use a different shell (like Fish, Nushell, or PowerShell), you will need to write an equivalent wrapper that captures the standard output of fj and passes it to your shell's cd command.
Restart your terminal or run source ~/.zshrc to apply the changes
Search from your home directory:
fjOr provide a starting directory:
fj ~/workspacePerformance comparable to alternatives with superior UX (tested on 183,998 directories):
| Tool | Time | Range (10 runs) |
|---|---|---|
| fj (headless) | 403.3 ms ± 44.3 ms | 338.7 - 457.5 ms |
| fd + fzf | 437.2 ms ± 64.4 ms | 350.6 - 544.6 ms |
