Terminal Tools Every Developer Needs in 2026
The terminal is where developers live. A well-configured terminal isn’t just faster — it changes how you think about problems. Here are the tools I use daily and can’t imagine working without.
File Navigation: Beyond cd and ls
zoxide — Smarter Directory Jumping
Stop typing full paths. zoxide learns your habits and jumps to directories by partial match:
# Instead of: cd ~/projects/hexink-blog/src/content
z hexink content
# It learns from frequency and recency
z blog # → jumps to your most-used "blog" directoryInstall it once, alias it to cd, and never look back.
eza — ls But Better
eza (the maintained fork of exa) adds icons, git status, and tree views:
# Beautiful file listing with git status
eza -la --git --icons
# Tree view with depth limit
eza --tree --level=2 --icons drwxr-xr-x src
├── components
│ ├── Header.astro
│ ├── Footer.astro (modified)
│ └── PostCard.astro (staged)
├── content
│ └── blog
└── lib
└── utils.tsGit Workflow
lazygit — Git TUI That Actually Works
If you find yourself running git status, git add, git commit in a loop, lazygit replaces the entire cycle with a single interactive UI:
lazygit
# Opens a full terminal UI:
# - Stage/unstage with spacebar
# - Commit with 'c'
# - Push with 'P'
# - Interactive rebase with drag-and-dropThe killer feature: interactive rebase without fear. You can reorder, squash, and edit commits visually, with undo at every step.
delta — Beautiful Git Diffs
Replace the default git diff output with syntax-highlighted, side-by-side diffs:
# ~/.gitconfig
[core]
pager = delta
[delta]
navigate = true
side-by-side = true
line-numbers = trueOnce you see diffs with proper syntax highlighting, you can’t go back.
Text Processing
ripgrep (rg) — Faster Than grep
ripgrep respects .gitignore, uses smart case, and is absurdly fast:
# Search for a pattern across your project
rg "useState" --type tsx
# Replace across files (with confirmation)
rg "oldFunction" --files-with-matches | xargs sed -i 's/oldFunction/newFunction/g'On a large monorepo, rg returns results before grep finishes reading the directory tree.
fzf — Fuzzy Find Everything
The Swiss Army knife of CLI tools. fzf adds fuzzy search to any list:
# Search files
fzf --preview 'bat --color=always {}'
# Search git branches
git branch | fzf | xargs git checkout
# Search command history
history | fzfCombine fzf with rg for a search experience that rivals any IDE:
# Interactive project-wide search with preview
rg --line-number . | fzf --delimiter ':' --preview 'bat --color=always --highlight-line {2} {1}'Monitoring & System
btop — System Monitor
Forget htop. btop provides CPU, memory, disk, and network monitoring with a polished UI:
btop
# Shows:
# - Per-core CPU usage with history graphs
# - Memory and swap with process breakdown
# - Disk I/O per device
# - Network up/down with historydust — Disk Usage, Visualized
Find what’s eating your disk space:
dust ~/projects
# Shows a bar chart of directory sizes, sorted by size
# Way more intuitive than du -shMy Setup
Here’s the relevant section of my shell config:
# ~/.zshrc (relevant aliases)
alias ls="eza --icons"
alias ll="eza -la --git --icons"
alias tree="eza --tree --icons"
alias cat="bat"
alias cd="z"
alias diff="delta"
alias top="btop"
alias du="dust"
alias find="fd"
alias grep="rg"The theme: replace every default tool with a modern alternative that has better defaults, better output, and better performance.
The Compound Effect
No single tool here is life-changing. But together, they compound. You navigate faster, search faster, commit faster, and debug faster. Over a year, the time savings are measured in weeks.
Start with one — I’d recommend zoxide — and add others as you feel the friction.
This is part 2 of the Notion-Powered Blog series. Part 1 covers how to set up Notion as your blog’s CMS.