Side by side
| Feature | ukrop | fzf |
|---|---|---|
| Language | Rust | Go |
| Directory jumping | ✓ tracked | Alt+C (find) |
| Command history search | ✓ | Ctrl+R |
| SSH host picker | ✓ | – |
| Frecency scoring | ✓ | – |
| Two-tier search | substring + fuzzy | – |
| Match highlighting | ✓ | ✓ |
| Tracks visits / metadata | ✓ auto | – |
| Unified TUI | 3-panel | single list |
| General-purpose fuzzy | – | ✓ |
| Pipe-able | – | ✓ |
| Plugin ecosystem | – | huge |
| Favorites | ✓ | – |
| Edit before execute | ✓ | – |
| Setup wizard | ✓ | – |
| License | MIT | MIT |
Where ukrop wins
- Purpose-built for the shell workflow (cd + run + ssh).
- Frecency scoring — fzf has no built-in ranking by usage patterns.
- Three-panel TUI with simultaneous results.
- Two-tier search with substring priority and match highlighting.
- Tracks directory visits, command metadata (exit codes, CWD), and SSH hosts automatically.
- Favorites, CWD filtering, edit-before-execute, and clipboard copy.
- Zero configuration after
ukrop setup.
Where fzf wins
- General-purpose — works with any list (files, processes, git branches, etc.).
- Massive ecosystem of integrations and plugins.
- Extremely mature and widely adopted.
- Composes naturally with other tools via pipes.
Bottom line
fzf is a Swiss army knife; ukrop is a purpose-built tool. fzf requires manual setup for each use case, while ukrop provides an integrated experience out of the box. They can happily coexist.