MCPcopy Index your code
hub / github.com/gsamokovarov/jump

github.com/gsamokovarov/jump @v0.67.0 sqlite

repository ↗ · DeepWiki ↗ · release v0.67.0 ↗
278 symbols 975 edges 74 files 97 documented · 35%
README

[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?

Jump embraces fuzzy matching, forgiving inputs, expressive hints (Dev, soc/web, tapping j again), and natural relative path handling.

It is designed to save keystrokes without giving up control.

If it feels hand-crafted… that is for you to call. 😄

Extension points exported contracts — how you extend this code

Importer (Interface)
Importer imports a configuration from an external tool into jump. [3 implementers]
importer/importer.go
Config (Interface)
Config represents the config directory and all the miscellaneous configuration files we can have in there. [2 implementers]
config/config.go
Truncater (Interface)
Truncater encapsulates everything that responds to Truncate(int64). [2 implementers]
config/jsonio/jsonio.go
Truncater (Interface)
Truncater encapsulates everything that responds to Truncate(int64). [2 implementers]
config/atom/atom.go
CommandRegistry (Interface)
CommandRegistry can be queried for the available commands and options.
cli/registry.go
CommandFn (FuncType)
CommandFn represents a command handler function.
cli/command.go
Callback (FuncType)
Callback is called on every import.
importer/importer.go
WriteSeekerTruncater (Interface)
WriteSeekerTruncater is the interface needed by the Encode first argument. It's a narrower type than a file, and can be
config/jsonio/jsonio.go

Core symbols most depended-on inside this repo

Len
called by 32
scoring/entries.go
cdCmd
called by 19
cmd/cd.go
RegisterCommand
called by 16
cli/command.go
ParseArgs
called by 14
cli/args.go
CalculateScore
called by 14
scoring/entry.go
Outf
called by 12
cli/output.go
Close
called by 12
config/atom/atom.go
ReadEntries
called by 10
config/config.go

Shape

Function 165
Method 83
Struct 15
Interface 7
TypeAlias 6
FuncType 2

Languages

Go100%

Modules by API surface

config/config.go15 symbols
config/testing.go12 symbols
shell/shell_test.go10 symbols
config/atom/atom.go10 symbols
cli/args.go10 symbols
scoring/entries.go8 symbols
fuzzy/normalizer.go8 symbols
scoring/score.go7 symbols
scoring/entries_test.go7 symbols
importer/importer.go7 symbols
config/jsonio/jsonio_test.go7 symbols
cmd/cd.go7 symbols

Dependencies from manifests, versioned

github.com/gsamokovarov/assertv0.0.0-2018041406344 · 1×

For agents

$ claude mcp add jump \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact