📚 jump - Awesome Go Library for Utilities

Jump helps you navigate faster by learning your habits
Detailed Description of jump
Jump
Jump integrates with your shell and learns where you go. It tracks the directories you visit and lets you jump to the right one with just a few fuzzy-typed characters.
Installation
Packages are available on the following platforms:
| Platform | Command |
|---|---|
| macOS | brew install jump or port install jump |
| Linux | sudo snap install jump |
| Nix | nix-env -iA nixpkgs.jump |
| Go | go install github.com/gsamokovarov/jump@latest |
Linux distribution packages
| Distribution | Command |
|---|---|
| Arch | sudo yay -S jump |
| Ubuntu / Debian | wget https://github.com/gsamokovarov/jump/releases/download/v0.67.0/jump_0.67.0_amd64.deb && sudo dpkg -i jump_0.67.0_amd64.deb |
| Fedora | wget https://github.com/gsamokovarov/jump/releases/download/v0.67.0/jump-0.67.0-1.x86_64.rpm && sudo rpm -i jump-0.67.0-1.x86_64.rpm |
| Void | xbps-install -S jump |
Shell Integration
Jump is used through its helper function – j by default. Add it to your shell:
bash / zsh
eval "$(jump shell)"
fish
jump shell fish | source
PowerShell
Invoke-Expression (&jump shell pwsh | Out-String)
Nushell
jump shell nushell | save --append $nu.config-path
Murex
murex-package install https://github.com/lmorg/murex-module-jump.git
Jump begins tracking directories automatically once integrated.
Custom binding
The letter j is the default binding for Jump. But if that's not your jam, you can customize it to your liking.
eval "$(jump shell --bind=z)"
eval "$(jump shell --bind=goto)"
Or bind it directly to cd:
eval "$(jump shell --bind=cd)"
Typing cd project now performs a fuzzy jump.
Usage
Summary (Quick Examples)
j wc # Fuzzy Jump
j web-console # Exact Match
j dev/soc/web # Deep Jump
j ch site # Multi-Part Match
j app/ # Relative Jump
j . # Repo Root
j . cable # Based Mode
j - # cd -
j .. # cd ..
j ../.. # cd ../..
j # Reverse Jump
j Dev # Case-Sensitive
That was a quick overview of how j behaves. The sections below explain each feature with landing paths.
Regular jump
j wc # -> /Users/genadi/Development/rails/web-console
j console # -> /Users/genadi/Development/rails/web-console
j b-c # -> /Users/genadi/Development/rails/web-console
j web-console # -> /Users/genadi/Development/rails/web-console (exact)
Deep jump
j ch site # -> /Users/genadi/Development/chaos/website
j dev/soc/web # -> /Users/genadi/Development/society/website
Spaces and slashes work interchangeably.
Based Mode
j . cable # -> /Users/genadi/Development/rails/rails/actioncable
j . actionview/app # -> /Users/genadi/Development/rails/rails/actionview/app
j . # -> /Users/genadi/Development/rails/rails
Useful for monorepos with many repeated directory names.
Based mode determines the base directory using this priority:
$JUMP_BASED_PATHenvironment variable (or$JUMP_BASE_DIRin fish)- Git repository root (detected via
git rev-parse --show-toplevel) - Current directory (fallback when no git repo is detected)
This means j . works even outside git repositories, simply using the current directory as the base.
Relative Jump
If your input contains or ends with a slash, Jump checks for a relative directory.
# In /Users/genadi/Development/rails/rails
j actioncable/ # -> ./actioncable
j actionpack/app # -> ./actionpack/app
Jump also mirrors familiar shell movements:
j - # -> previous directory
j .. # -> parent directory
j ../.. # -> grandparent directory
If the relative path does not exist, Jump falls back to fuzzy search.
Reverse jump
j web # -> /Users/genadi/Development/society/website
j # -> /Users/genadi/Development/chaos/website
Case-sensitive jump
j Dev # -> /Users/genadi/Development
Pins
cd /Users/genadi/development/rails
jump pin r
j r # -> /Users/genadi/development/rails
List and remove pins:
jump pins
jump unpin r
Database Tools
jump clean # remove stale entries
jump forget # forget current directory
jump top # ranked directories
jump top --score # ranked directories with numeric scores
jump top dev # fuzzy filtered list
Importing from autojump or z
jump import
jump import autojump
jump import z
Imports merge into your existing database without overwriting scores.
Why Jump?
Cause it's good!