8 releases (5 breaking)

0.5.0 Sep 2, 2024
0.4.1 Oct 30, 2019
0.3.0 May 18, 2019
0.2.0 Nov 14, 2018
0.0.1 Dec 23, 2017

#371 in Filesystem

GPL-3.0 license

72KB
1.5K SLoC

⚡ pazi ⚡ — 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 (better performance for some benchmarks currently!).

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.

Dependencies

~5–15MB
~199K SLoC