diff --git a/CHANGELOG.md b/CHANGELOG.md index bc783e3..46be75f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -59,7 +59,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed -- Bash/Fish/Posix/Zsh: paths on Cygwin. +- Bash/Fish/POSIX/Zsh: paths on Cygwin. - Fish: completions not working on certain systems. - Bash: completions not escaping spaces correctly. diff --git a/README.md b/README.md index c910124..819f37f 100644 --- a/README.md +++ b/README.md @@ -51,292 +51,307 @@ Read more about the matching algorithm [here][algorithm-matching]. ## Installation -### *Step 1: Install zoxide* - -zoxide runs on most major platforms. If your platform isn't listed below, -please [open an issue][issues]. - -
-Linux - -To install zoxide, run this command in your terminal: - -```sh -curl -sS https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | bash -``` - -Or, you can use a package manager: - -| Distribution | Repository | Instructions | -| ------------------- | ----------------------- | ---------------------------------------------------------------------------------------------- | -| ***Any*** | **[crates.io]** | `cargo install zoxide --locked` | -| *Any* | [conda-forge] | `conda install -c conda-forge zoxide` | -| *Any* | [Linuxbrew] | `brew install zoxide` | -| Alpine Linux 3.13+ | [Alpine Linux Packages] | `apk add zoxide` | -| Arch Linux | [Arch Linux Community] | `pacman -S zoxide` | -| CentOS 7+ | [Copr] | `dnf copr enable atim/zoxide`
`dnf install zoxide` | -| Debian 11+ | [Debian Packages] | `apt install zoxide` | -| Devuan 4.0+ | [Devuan Packages] | `apt install zoxide` | -| Fedora 32+ | [Fedora Packages] | `dnf install zoxide` | -| Gentoo | [GURU Overlay] | `eselect repository enable guru`
`emerge --sync guru`
`emerge app-shells/zoxide` | -| Manjaro | | `pacman -S zoxide` | -| NixOS 21.05+ | [nixpkgs] | `nix-env -iA nixpkgs.zoxide` | -| openSUSE Tumbleweed | [openSUSE Factory] | `zypper install zoxide` | -| Parrot OS | | `apt install zoxide` | -| Raspbian 11+ | [Raspbian Packages] | `apt install zoxide` | -| Slackware 15.0+ | [SlackBuilds] | [Instructions][slackbuilds-howto] | -| Ubuntu 21.04+ | [Ubuntu Packages] | `apt install zoxide` | -| Void Linux | [Void Linux Packages] | `xbps-install -S zoxide` | - -
- -
-macOS - -To install zoxide, use a package manager: - -| Repository | Instructions | -| --------------- | ------------------------------------- | -| **[crates.io]** | `cargo install zoxide --locked` | -| [conda-forge] | `conda install -c conda-forge zoxide` | -| [Homebrew] | `brew install zoxide` | -| [MacPorts] | `port install zoxide` | - -Or, run this command in your terminal: - -```sh -curl -sS https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | bash -``` - -
- -
-Windows - -To install zoxide, run this command in your command prompt: - -```sh -curl.exe -A "MS" https://webinstall.dev/zoxide | powershell -``` - -Or, you can use a package manager: - -| Repository | Instructions | -| --------------- | ------------------------------------- | -| **[crates.io]** | `cargo install zoxide --locked` | -| [Chocolatey] | `choco install zoxide` | -| [conda-forge] | `conda install -c conda-forge zoxide` | -| [Scoop] | `scoop install zoxide` | - -
- -
-BSD - -To install zoxide, use a package manager: - -| Distribution | Repository | Instructions | -| ------------- | --------------- | ------------------------------- | -| ***Any*** | **[crates.io]** | `cargo install zoxide --locked` | -| DragonFly BSD | [DPorts] | `pkg install zoxide` | -| FreeBSD | [FreshPorts] | `pkg install zoxide` | -| NetBSD | [pkgsrc] | `pkgin install zoxide` | - -
- -
-Android - -To install zoxide, use a package manager: - -| Repository | Instructions | -| ---------- | -------------------- | -| [Termux] | `pkg install zoxide` | - -
- -### *Step 2: Add zoxide to your shell* - -To start using zoxide, add it to your shell. - -
-Bash - -Add this to your configuration (usually `~/.bashrc`): - -```sh -eval "$(zoxide init bash)" -``` - -
- -
-Elvish - -Add this to your configuration (usually `~/.elvish/rc.elv`): - -```sh -eval (zoxide init elvish | slurp) -``` - -> **Note** -> zoxide only supports elvish v0.18.0 and above. - -
- -
-Fish - -Add this to your configuration (usually `~/.config/fish/config.fish`): - -```fish -zoxide init fish | source -``` - -> **Note** -> zoxide only supports fish v3.4.0 and above. - -
- -
-Nushell - -Add this to your env file (find it by running `$nu.env-path` in Nushell): - -```sh -zoxide init nushell | save -f ~/.zoxide.nu -``` - -Now, add this to the end of your config file (find it by running -`$nu.config-path` in Nushell): - -```sh -source ~/.zoxide.nu -``` - -> **Note** -> zoxide only supports Nushell v0.73.0 and above. - -
- -
-PowerShell - -Add this to your configuration (find it by running `echo $profile` in -PowerShell): - -```powershell -# For zoxide v0.8.0+ -Invoke-Expression (& { - $hook = if ($PSVersionTable.PSVersion.Major -lt 6) { 'prompt' } else { 'pwd' } - (zoxide init --hook $hook powershell | Out-String) -}) - -# For older versions of zoxide -Invoke-Expression (& { - $hook = if ($PSVersionTable.PSVersion.Major -lt 6) { 'prompt' } else { 'pwd' } - (zoxide init --hook $hook powershell) -join "`n" -}) -``` - -
- -
-Xonsh - -Add this to your configuration (usually `~/.xonshrc`): - -```python -execx($(zoxide init xonsh), 'exec', __xonsh__.ctx, filename='zoxide') -``` - -
- -
-Zsh - -Add this to your configuration (usually `~/.zshrc`): - -```sh -eval "$(zoxide init zsh)" -``` - -For completions to work, the above line must be added *after* `compinit` is -called. You may have to rebuild your cache by running -`rm ~/.zcompdump*; compinit`. - -
- -
-Any POSIX shell - -Add this to your configuration: - -```sh -eval "$(zoxide init posix --hook prompt)" -``` - -
- -### *Step 3: Install fzf (optional)* - -[fzf] is a command-line fuzzy finder, used by zoxide for interactive selection. -It can be installed from [here][fzf-installation]. - -> **Note** -> zoxide only supports fzf v0.33.0 and above. - -### *Step 4: Import your data (optional)* - -If you currently use any of the following plugins, you may want to import -your data into zoxide: - -
-autojump - -```sh -zoxide import --from=autojump "/path/to/autojump/db" -``` - -The path usually varies according to your system: - -| OS | Path | Example | -| ------- | ------------------------------------------------------------------------------------ | ------------------------------------------------------ | -| Linux | `$XDG_DATA_HOME/autojump/autojump.txt` or `$HOME/.local/share/autojump/autojump.txt` | `/home/alice/.local/share/autojump/autojump.txt` | -| macOS | `$HOME/Library/autojump/autojump.txt` | `/Users/Alice/Library/autojump/autojump.txt` | -| Windows | `%APPDATA%\autojump\autojump.txt` | `C:\Users\Alice\AppData\Roaming\autojump\autojump.txt` | - -
- -
-fasd / z / z.lua / zsh-z - -```sh -zoxide import --from=z "path/to/z/db" -``` - -The path usually varies according to your system: - -| Plugin | Path | -| ---------------- | ----------------------------------------------------------------------------------- | -| fasd | `$_FASD_DATA` or `$HOME/.fasd` | -| z | `$_Z_DATA` or `$HOME/.z` | -| z.lua (bash/zsh) | `$_ZL_DATA` or `$HOME/.zlua` | -| z.lua (fish) | `$XDG_DATA_HOME/zlua/zlua.txt` or `$HOME/.local/share/zlua/zlua.txt` or `$_ZL_DATA` | -| zsh-z | `$ZSHZ_DATA` or `$_Z_DATA` or `$HOME/.z` | - -
- -
-ZLocation - -```powershell -$db = New-TemporaryFile -(Get-ZLocation).GetEnumerator() | ForEach-Object { Write-Output ($_.Name+'|'+$_.Value+'|0') } | Out-File $db -zoxide import --from=z $db -``` - -
+zoxide can be installed in 4 easy steps: + +1. **Install binary** + + zoxide runs on most major platforms. If your platform isn't listed below, + please [open an issue][issues]. + +
+ Linux + + > The recommended way to install zoxide is via the install script: + > + > ```sh + > curl -sS https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | bash + > ``` + > + > Or, you can use a package manager: + > + > | Distribution | Repository | Instructions | + > | ------------------- | ----------------------- | ----------------------------------------------------------------------------------------------------- | + > | ***Any*** | **[crates.io]** | `cargo install zoxide --locked` | + > | *Any* | [asdf] | `asdf plugin add zoxide https://github.com/nyrst/asdf-zoxide.git`
`asdf install zoxide latest` | + > | *Any* | [conda-forge] | `conda install -c conda-forge zoxide` | + > | *Any* | [Linuxbrew] | `brew install zoxide` | + > | Alpine Linux 3.13+ | [Alpine Linux Packages] | `apk add zoxide` | + > | Arch Linux | [Arch Linux Community] | `pacman -S zoxide` | + > | CentOS 7+ | [Copr] | `dnf copr enable atim/zoxide`
`dnf install zoxide` | + > | Debian 11+[^1] | [Debian Packages] | `apt install zoxide` | + > | Devuan 4.0+[^1] | [Devuan Packages] | `apt install zoxide` | + > | Fedora 32+ | [Fedora Packages] | `dnf install zoxide` | + > | Gentoo | [GURU Overlay] | `eselect repository enable guru`
`emerge --sync guru`
`emerge app-shells/zoxide` | + > | Manjaro | | `pacman -S zoxide` | + > | NixOS 21.05+ | [nixpkgs] | `nix-env -iA nixpkgs.zoxide` | + > | openSUSE Tumbleweed | [openSUSE Factory] | `zypper install zoxide` | + > | Parrot OS[^1] | | `apt install zoxide` | + > | Raspbian 11+[^1] | [Raspbian Packages] | `apt install zoxide` | + > | Slackware 15.0+ | [SlackBuilds] | [Instructions][slackbuilds-howto] | + > | Ubuntu 21.04+[^1] | [Ubuntu Packages] | `apt install zoxide` | + > | Void Linux | [Void Linux Packages] | `xbps-install -S zoxide` | + +
+ +
+ macOS + + > To install zoxide, use a package manager: + > + > | Repository | Instructions | + > | --------------- | ----------------------------------------------------------------------------------------------------- | + > | **[crates.io]** | `cargo install zoxide --locked` | + > | **[Homebrew]** | `brew install zoxide` | + > | [asdf] | `asdf plugin add zoxide https://github.com/nyrst/asdf-zoxide.git`
`asdf install zoxide latest` | + > | [conda-forge] | `conda install -c conda-forge zoxide` | + > | [MacPorts] | `port install zoxide` | + > + > Or, run this command in your terminal: + > + > ```sh + > curl -sS https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | bash + > ``` + +
+ +
+ Windows + + > To install zoxide, run this command in your terminal: + > + > ```sh + > curl.exe -A "MS" https://webinstall.dev/zoxide | powershell + > ``` + > + > Or, you can use a package manager: + > + > | Repository | Instructions | + > | --------------- | ------------------------------------- | + > | **[crates.io]** | `cargo install zoxide --locked` | + > | [Chocolatey] | `choco install zoxide` | + > | [conda-forge] | `conda install -c conda-forge zoxide` | + > | [Scoop] | `scoop install zoxide` | + +
+ +
+ BSD + + > To install zoxide, use a package manager: + > + > | Distribution | Repository | Instructions | + > | ------------- | --------------- | ------------------------------- | + > | ***Any*** | **[crates.io]** | `cargo install zoxide --locked` | + > | DragonFly BSD | [DPorts] | `pkg install zoxide` | + > | FreeBSD | [FreshPorts] | `pkg install zoxide` | + > | NetBSD | [pkgsrc] | `pkgin install zoxide` | + +
+ +
+ Android + + > To install zoxide, use a package manager: + > + > | Repository | Instructions | + > | ---------- | -------------------- | + > | [Termux] | `pkg install zoxide` | + +
+ +2. **Setup zoxide on your shell** + + To start using zoxide, add it to your shell. + +
+ Bash + + > Add this to your configuration (usually `~/.bashrc`): + > + > ```sh + > eval "$(zoxide init bash)" + > ``` + +
+ +
+ Elvish + + > Add this to your configuration (usually `~/.elvish/rc.elv`): + > + > ```sh + > eval (zoxide init elvish | slurp) + > ``` + > + > **Note** + > zoxide only supports elvish v0.18.0 and above. + +
+ +
+ Fish + + > Add this to your configuration (usually `~/.config/fish/config.fish`): + > + > ```fish + > zoxide init fish | source + > ``` + > + > **Note** + > zoxide only supports fish v3.4.0 and above. + +
+ +
+ Nushell + + > Add this to your env file (find it by running `$nu.env-path` in Nushell): + > + > ```sh + > zoxide init nushell | save -f ~/.zoxide.nu + > ``` + > + > Now, add this to the end of your config file (find it by running + > `$nu.config-path` in Nushell): + > + > ```sh + > source ~/.zoxide.nu + > ``` + > + > **Note** + > zoxide only supports Nushell v0.73.0 and above. + +
+ +
+ PowerShell + + > Add this to your configuration (find it by running `echo $profile` in + > PowerShell): + > + > - For zoxide v0.8.0+: + > + > ```powershell + > Invoke-Expression (& { + > $hook = if ($PSVersionTable.PSVersion.Major -lt 6) { 'prompt' } else { 'pwd' } + > (zoxide init --hook $hook powershell | Out-String) + > }) + > ``` + > + > - For older versions of zoxide: + > + > ```powershell + > Invoke-Expression (& { + > $hook = if ($PSVersionTable.PSVersion.Major -lt 6) { 'prompt' } else { 'pwd' } + > (zoxide init --hook $hook powershell) -join "`n" + > }) + > ``` + +
+ +
+ Xonsh + + > Add this to your configuration (usually `~/.xonshrc`): + > + > ```python + > execx($(zoxide init xonsh), 'exec', __xonsh__.ctx, filename='zoxide') + > ``` + +
+ +
+ Zsh + + > Add this to your configuration (usually `~/.zshrc`): + > + > ```sh + > eval "$(zoxide init zsh)" + > ``` + > + > For completions to work, the above line must be added *after* `compinit` is + > called. You may have to rebuild your completions cache by running + > `rm ~/.zcompdump*; compinit`. + +
+ +
+ Any POSIX shell + + > Add this to your configuration: + > + > ```sh + > eval "$(zoxide init posix --hook prompt)" + > ``` + +
+ +3. **Install fzf** (optional) + + [fzf] is a command-line fuzzy finder, used by zoxide for completions / + interactive selection. It can be installed from [here][fzf-installation]. + + > **Note** + > zoxide only supports fzf v0.33.0 and above. + +4. **Import your data** (optional) + + If you currently use any of these plugins, you may want to import your data + into zoxide: + +
+ autojump + + > Run this command in your terminal: + > + > ```sh + > zoxide import --from=autojump "/path/to/autojump/db" + > ``` + > + > The path usually varies according to your system: + > + > | OS | Path | Example | + > | ------- | ------------------------------------------------------------------------------------ | ------------------------------------------------------ | + > | Linux | `$XDG_DATA_HOME/autojump/autojump.txt` or `$HOME/.local/share/autojump/autojump.txt` | `/home/alice/.local/share/autojump/autojump.txt` | + > | macOS | `$HOME/Library/autojump/autojump.txt` | `/Users/Alice/Library/autojump/autojump.txt` | + > | Windows | `%APPDATA%\autojump\autojump.txt` | `C:\Users\Alice\AppData\Roaming\autojump\autojump.txt` | + +
+ +
+ fasd, z, z.lua, zsh-z + + > Run this command in your terminal: + > + > ```sh + > zoxide import --from=z "path/to/z/db" + > ``` + > + > The path usually varies according to your system: + > + > | Plugin | Path | + > | ---------------- | ----------------------------------------------------------------------------------- | + > | fasd | `$_FASD_DATA` or `$HOME/.fasd` | + > | z (bash/zsh) | `$_Z_DATA` or `$HOME/.z` | + > | z (fish) | `$Z_DATA` or `$XDG_DATA_HOME/z/data` or `$HOME/.local/share/z/data` | + > | z.lua (bash/zsh) | `$_ZL_DATA` or `$HOME/.zlua` | + > | z.lua (fish) | `$XDG_DATA_HOME/zlua/zlua.txt` or `$HOME/.local/share/zlua/zlua.txt` or `$_ZL_DATA` | + > | zsh-z | `$ZSHZ_DATA` or `$_Z_DATA` or `$HOME/.z` | + +
+ +
+ ZLocation + + > Run this command in PowerShell: + > + > ```powershell + > $db = New-TemporaryFile + > (Get-ZLocation).GetEnumerator() | ForEach-Object { Write-Output ($_.Name+'|'+$_.Value+'|0') } | Out-File $db + > zoxide import --from=z $db + > ``` + +
## Configuration @@ -362,8 +377,8 @@ When calling `zoxide init`, the following flags are available: ### Environment variables -Environment variables[?][wiki-env] can be used for configuration. -They must be set before `zoxide init` is called. +Environment variables[^2] can be used for configuration. They must be set before +`zoxide init` is called. - `_ZO_DATA_DIR` - Specifies the directory in which the database is stored. @@ -398,26 +413,33 @@ They must be set before `zoxide init` is called. ## Third-party integrations -| Application | Description | Plugin | -| ------------------ | -------------------------------------------- | -------------------------- | -| [clink] | Improved cmd.exe for Windows | [clink-zoxide] | -| [emacs] | Text editor | [zoxide.el] | -| [felix] | File manager | Natively supported | -| [joshuto] | File manager | Natively supported | -| [lf] | File manager | See the [wiki][lf-wiki] | -| [nnn] | File manager | [nnn-autojump] | -| [ranger] | File manager | [ranger-zoxide] | -| [telescope.nvim] | Fuzzy finder for Neovim | [telescope-zoxide] | -| [vim] / [neovim] | Text editor | [zoxide.vim] | -| [xplr] | File manager | [zoxide.xplr] | -| [xxh] | Transports shell configuration over SSH | [xxh-plugin-prerun-zoxide] | -| [zabb] | Finds the shortest possible query for a path | Natively supported | -| [zsh-autocomplete] | Realtime completions for zsh | Natively supported | +| Application | Description | Plugin | +| --------------------- | -------------------------------------------- | -------------------------- | +| [clink] | Improved cmd.exe for Windows | [clink-zoxide] | +| [emacs] | Text editor | [zoxide.el] | +| [felix] | File manager | Natively supported | +| [joshuto] | File manager | Natively supported | +| [lf] | File manager | See the [wiki][lf-wiki] | +| [nnn] | File manager | [nnn-autojump] | +| [ranger] | File manager | [ranger-zoxide] | +| [telescope.nvim] | Fuzzy finder for Neovim | [telescope-zoxide] | +| [tmux-session-wizard] | Jump to a directory inside a Tmux session | Natively supported | +| [vim] / [neovim] | Text editor | [zoxide.vim] | +| [xplr] | File manager | [zoxide.xplr] | +| [xxh] | Transports shell configuration over SSH | [xxh-plugin-prerun-zoxide] | +| [zabb] | Finds the shortest possible query for a path | Natively supported | +| [zsh-autocomplete] | Realtime completions for zsh | Natively supported | + +[^1]: Debian / Ubuntu derivatives update their packages very slowly. If you're +using one of these distributions, consider using the install script instead. +[^2]: If you're not sure how to set an environment variable on your shell, check +out the [wiki][wiki-env]. [algorithm-aging]: https://github.com/ajeetdsouza/zoxide/wiki/Algorithm#aging [algorithm-matching]: https://github.com/ajeetdsouza/zoxide/wiki/Algorithm#matching [alpine linux packages]: https://pkgs.alpinelinux.org/packages?name=zoxide [arch linux community]: https://archlinux.org/packages/community/x86_64/zoxide/ +[asdf]: https://github.com/asdf-vm/asdf [builtwithnix-badge]: https://img.shields.io/badge/builtwith-nix-7d81f7?logo=nixos&logoColor=white&style=flat-square [builtwithnix]: https://builtwithnix.org/ [chocolatey]: https://community.chocolatey.org/packages/zoxide @@ -462,6 +484,7 @@ They must be set before `zoxide init` is called. [telescope-zoxide]: https://github.com/jvgrootveld/telescope-zoxide [telescope.nvim]: https://github.com/nvim-telescope/telescope.nvim [termux]: https://github.com/termux/termux-packages/tree/master/packages/zoxide +[tmux-session-wizard]: https://github.com/27medkamal/tmux-session-wizard [tutorial]: contrib/tutorial.webp [ubuntu packages]: https://packages.ubuntu.com/jammy/zoxide [vim]: https://github.com/vim/vim