jump – navigate the filesystem using fuzzy directory matching
j term
j term/subterm
j . [term]
jump command [options]
Jump is a directory navigation tool that learns the folders you visit and lets you return to them with short, fuzzy search terms. It integrates with your shell through the helper function j, which accepts only search terms – no flags, no options. Whatever you type becomes a pattern Jump matches against its directory database.
Jump updates its scoring database automatically as you navigate.
Add Jump to your shell configuration:
eval "$(jump shell)" # bash / zsh
jump shell fish | source # fish
Invoke-Expression (&jump shell pwsh) # PowerShell
jump shell nushell | save --append $nu.config-path # Nushell
murex-package install https://github.com/lmorg/murex-module-jump.git # Murex
Jump begins tracking directories as soon as this integration is active.
Choose an alternative helper name instead of j:
eval "$(jump shell --bind=z)" # bind to `z`
eval "$(jump shell --bind=goto)" # bind to `goto`
eval "$(jump shell --bind=cd)" # override `cd`
Binding to cd makes directory changes behave like Jump searches:
cd project # performs a fuzzy jump
cd src/app # performs a relative jump when the path exists
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
Fuzzy match against frequently visited directories:
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
Exact matches override fuzzy scoring:
j web-console # -> /Users/genadi/Development/rails/web-console
Jump can match across multiple path components:
j ch site # -> /Users/genadi/Development/chaos/website
j dev/soc/web # -> /Users/genadi/Development/society/website
Useful when many directories share similar names.
Limit fuzzy search to the current git repository root or $JUMP_BASED_PATH:
j . cable # -> /Users/genadi/Development/rails/rails/actioncable
j . actionview/app # -> /Users/genadi/Development/rails/rails/actionview/app
j . # -> /Users/genadi/Development/rails/rails
Ideal for monorepos with repeated directory names.
If the input contains or ends with a slash, Jump checks for an existing relative path:
j actioncable/ # -> ./actioncable
j actionpack/app # -> ./actionpack/app
Jump also mirrors shell-style movements:
j - # -> previous directory
j .. # -> parent directory
j ../.. # -> grandparent directory
If the path does not exist, Jump falls back to fuzzy matching.
Repeat j with no arguments to jump to the next-best match:
j web # -> /Users/genadi/Development/society/website
j # -> /Users/genadi/Development/chaos/website
Capital letters trigger case-sensitive search:
j Dev # -> /Users/genadi/Development
Pins force a search term to always resolve to a specific directory:
cd /Users/genadi/development/rails
jump pin r
j r # -> /Users/genadi/development/rails
Manage pins:
jump pins
jump unpin r
Jump maintains an internal scoring database.
jump clean # remove stale entries
jump forget # forget the current directory
jump top # show ranked directories
jump top --score # include numeric scores
jump top dev # filter by fuzzy term
Import data from previous tools:
jump import
jump import autojump
jump import z
jump import zoxide
Existing scores are preserved during import.
Jump is opinionated, and we recommend sticking with the hand-tuned defaults that have evolved over years of use. Still, a few settings are available when tuning the behavior is helpful. These options are managed with jump settings.
Control how spaces are interpreted.
Removing spaces allows more relaxed matching:
jump settings --space=ignore
Prevent automatic cleanup of missing directories:
jump settings --preserve=true
Reset all settings to defaults:
jump settings --reset
Genadi Samokovarov
autojump(1), z(1), zoxide(1), pushd(1), popd(1)