Awesome
:zap: pazi :zap: — A fast autojump helper
What is pazi?
Pazi is an autojump utility. That is to say, pazi remembers visited directories in the past and makes it easier to get back to them. A typical use of pazi might look like the following:
user@host ~ $ cd go/src/k8s.io/kubernetes
user@host ~/go/src/k8s.io/kubernetes $ cd /usr/src/linux
# The primary way to interact with pazi is via the 'z', zap-to-directory, alias
user@host /usr/src/linux $ z kuber
user@host ~/go/src/k8s.io/kubernetes $ # pazi zapped to the best match for 'kuber' that it remembers having been in
user@host ~/go/src/k8s.io/kubernetes $ z linux
user@host /usr/src/linux $
# If multiple items match a query, they can be interactively chosen between with '-i':
user@host /usr/src/linux $ cd ~/dev/linux
user@host ~/dev/linux $ z -i linux
2 0.7200000000000001 /usr/src/linux
1 0.9200000000000002 /home/user/dev/linux
> 1
user@host ~/dev/linux
How do I install pazi?
First, you need to install the pazi
binary somewhere in your $PATH
.
Prebuilt binaries are available on the releases page.
If you have the rust toolchain installed, you may alternatively compile from
this repository or run cargo install pazi
.
After installing the pazi binary, add the following to your .zshrc
or
.bashrc
:
if command -v pazi &>/dev/null; then
eval "$(pazi init zsh)" # or 'bash'
fi
Note: The init should be added after autoload -Uz compinit; compinit;
has been called since pazi init zsh
initializes completion for the z
command.
Or if you are a fish user, add the following to your config.fish
if command -v pazi >/dev/null
status --is-interactive; and pazi init fish | source
end
Finally, re-launch the shell and start zapping around :)
Using pazi with fzf
Pazi may be used with "fuzzy finders" like fzf as described here.
What makes pazi different from X
There are several autojump utilities, including fasd (or a better maintained fork), z, and autojump.
This implementation aims to be faster than any of the others (in no small part
due to being in Rust), and also safer than fasd
and z
which, being
shell-parsers written entirely in shell, are tricky to get right.
It's worth specifically noting that zoxide is another autojumper written in Rust, which has comparable performance <sup><sub>(better performance for some benchmarks currently!)</sub></sup>.
For a more complete list of other autojump programs, refer to the table here.
So, is it faster?
Pazi is faster than the other autojump implementations it has been benchmarked against, excluding zoxide. The results of these benchmarks are documented here.
Status
Pazi is currently a work-in-progress. It mostly works, but it's not ready for a 1.0 release yet.
The data-format is likely stable (or will be migrated automatically), so now's a fine time to try it... but it's quite possible there are bugs and rough edges. Please do file issues or PRs as appropriate!
License
GPLv3
Contributions
Welcome and encouraged; unfortunately, no contributing.md yet.