Skip to content

gsamokovarov/jump

Repository files navigation

[releases]

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.

Demo


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.


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!