A blazing fast terminal file manager with vim-like keybindings, built with Rust and Ratatui.
- Vim-like Navigation: Navigate with hjkl or arrow keys
- Fuzzy Search: Real-time fuzzy file searching with character-level highlighting
- File Operations: Copy, cut, paste, delete, and create files/directories
- Mark System: Mark multiple files with
mand operate on them at once - Multi-Select Mode: Visual multi-select with
Shift+Vfor range selection - Quick Jumps: Customizable shortcuts like
gh(home),gd(downloads),gp(projects) - Navigation History: Go back with
Ctrl+Othrough your navigation history - Sorting: Sort by name, size, or modified time (ascending/descending)
- Directory Sizes: Async calculation of directory sizes with loading indicator
- Hidden Files: Toggle hidden files visibility with
. - Visual Feedback: Cut files shown dimmed, copied files flash yellow
- Customizable: Keybindings and behaviors via TOML config
- Fast & Async: Built with Tokio for non-blocking operations
curl -sSL https://raw.githubusercontent.com/enheit/jumper/main/install.sh | bashThis will download and install the latest release to ~/.local/bin/jumper.
yay -S jumper-gitOr with any other AUR helper:
paru -S jumper-gitAfter installation, add shell integration to your shell config:
# For Bash - add to ~/.bashrc
echo 'source /usr/share/jumper/jumper.sh' >> ~/.bashrc
# For Zsh - add to ~/.zshrc
echo 'source /usr/share/jumper/jumper.sh' >> ~/.zshrc
# For Fish - add to ~/.config/fish/config.fish
echo 'source /usr/share/jumper/jumper.fish' >> ~/.config/fish/config.fishThen reload your shell: source ~/.bashrc
# Clone the repository
git clone https://github.com/enheit/jumper.git
cd jumper
# Install using cargo
cargo install --path .After installation, add shell integration to your shell config:
# For Bash - add to ~/.bashrc
echo 'source ~/.local/share/jumper/shell/jumper.sh' >> ~/.bashrc
# For Zsh - add to ~/.zshrc
echo 'source ~/.local/share/jumper/shell/jumper.sh' >> ~/.zshrc
# For Fish - add to ~/.config/fish/config.fish
echo 'source ~/.local/share/jumper/shell/jumper.fish' >> ~/.config/fish/config.fishThen reload your shell: source ~/.bashrc
cargo install jumperAfter installation, add shell integration (same as "From Source" above)
Download the latest release from GitHub Releases and extract it to a directory in your PATH.
For jumper to change your shell's directory when you quit, source the shell integration script.
The install script automatically copies integration scripts to ~/.local/share/jumper/shell/.
Bash - Add to ~/.bashrc:
source ~/.local/share/jumper/shell/jumper.shZsh - Add to ~/.zshrc:
source ~/.local/share/jumper/shell/jumper.shFish - Add to ~/.config/fish/config.fish:
source ~/.local/share/jumper/shell/jumper.fishThen reload your shell:
source ~/.bashrc # or ~/.zshrcAfter setup, jumper will automatically change your shell's directory when you quit!
Simply run jumper in your terminal:
jumper| Key | Action |
|---|---|
j / ↓ |
Move down |
k / ↑ |
Move up |
h / ← |
Go to parent directory |
l / → |
Enter directory / Open file |
gg |
Jump to top |
G |
Jump to bottom |
Ctrl+O |
Go back in navigation history |
q |
Quit |
? |
Show help |
| Key | Action |
|---|---|
a |
Create new file/folder |
r |
Rename (cursor before extension) |
R |
Rename (cursor at end, with extension) |
yy |
Copy current file |
y |
Copy marked files |
x |
Cut current/marked files |
p |
Paste |
d |
Delete current/marked files |
m |
Toggle mark on current file |
Shift+V |
Multi-select mode |
ESC |
Clear marks/cut clipboard/search |
| Key | Action |
|---|---|
j / ↓ |
Move down and expand selection |
k / ↑ |
Move up and shrink selection |
gg |
Jump to top and select all to top |
G |
Jump to bottom and select all to bottom |
m |
Remove current file from selection |
y |
Copy selection and exit |
x |
Cut selection and exit |
d |
Delete selection |
Enter |
Exit and keep marks |
ESC |
Exit and clear all marks |
| Key | Action |
|---|---|
/ |
Search (fuzzy) |
. |
Toggle hidden files |
s |
Open sort menu |
o |
Toggle sort order (ascending/descending) |
| Key | Default Location |
|---|---|
gh |
Home directory |
gd |
Downloads |
gp |
Projects |
Jumper looks for configuration at ~/.config/jumper/config.toml. A default config is created on first run.
[keybindings]
history_back = "ctrl+o"
[keybindings.quick_jumps]
gh = "/home/username"
gd = "/home/username/Downloads"
gp = "/home/username/Projects"
gc = "/home/username/.config"
[behavior]
show_hidden = false
default_sort = "name" # options: "name", "size", "modified"
delete_confirmation = true # ask before deleting
flash_duration_ms = 150 # how long copied files flash yellowColors are inherited from your terminal theme (directories bold, hidden files dimmed), so jumper always matches your light/dark scheme.
- Press
Shift+Vto enter visual multi-select mode - Navigate with
j/kto select multiple items - Press
yto copy all orxto cut all - Press
ESCto cancel
Press s to open the sort menu, then:
n- Sort by names- Sort by sizem- Sort by modified timeESC- Cancel
Press o to toggle the sort order (ascending/descending).
Directories are always shown above files.
- Rust 1.70 or higher
- Cargo
cargo build --releaseThe binary will be available at target/release/jumper.
# Run in development mode
cargo run
# Run tests
cargo test
# Format code
cargo fmt
# Lint
cargo clippy- Ratatui - Terminal UI framework
- Crossterm - Cross-platform terminal manipulation
- Tokio - Async runtime
- fuzzy-matcher - Fuzzy search
- fs_extra - Extended file operations
- arboard - Cross-platform clipboard
Contributions are welcome! Please see CONTRIBUTING.md for details.
This project is licensed under the MIT License - see the LICENSE file for details.
Inspired by other great terminal file managers: