Development · v1.0

12 tools that replaced my IDE.

The terminal is the most underrated productivity surface in software. Here's the stack that runs my entire dev workflow — from blank file to deployed PR in 30 minutes, no IDE required.

01 · The categories

Five jobs. Twelve tools. Zero IDE.

Every dev task is one of five jobs: navigate, search, version, multiplex, monitor. The 12 tools below are the best 2026 has for each. Everything else is overhead.

1
Navigation · where am I, where do I go?
Move through the filesystem at the speed of thought.

Most of your day is jumping. To a project, to a file, to a function. These three tools make every jump faster than a click.

zoxide— smarter cd fzf— fuzzy finder eza— modern ls
2
Search · find things fast
Read code like a search engine, not a prayer.

When you know what you're looking for, regex is faster than a sidebar. When you don't, fuzzy file find is faster than a sidebar.

ripgrep— rg, the grep killer fd— modern find bat— cat with highlighting
3
Git · version control at speed
Branch, commit, push, PR — without leaving the keyboard.

TUI for git is a different product than a Git GUI. lazygit for the staging and conflict flows, gh for everything GitHub does.

lazygit— TUI git gh— GitHub CLI delta— readable diffs
4
Shell · prompt + persistence
Look fast. Stay fast across sessions.

A good prompt tells you what branch, what env, what cluster, without you asking. A multiplexer means your work survives every disconnect.

starship— cross-shell prompt tmux— persistent sessions
5
Monitoring · what's happening
See disk, CPU, and processes without a GUI.

A dashboard tab is a context switch. These tools answer the same question in one keystroke, from the prompt you're already in.

btop— system monitor dust— modern du
02 · Why

IDEs are a tax on iteration speed.

Every IDE is a window manager for the same 12 things a terminal already does. The IDE adds a sidebar, a settings dialog, and a 4-second startup tax. The terminal adds pipes, scripts, and remote-friendly everything.

Signal: "I want to compose my workflow, not click through menus" · "I work on a remote box half the time" · "my IDE broke after an OS update" · "I keep opening the same 4 files"
↓
Action: Drop the IDE. The terminal is composable. The terminal pipes. The terminal scripts. The terminal is the same on every machine you SSH into, and it's the same 30 years from now.
Signal: "But I need IntelliSense" · "But the debugger" · "But git merge conflicts"
↓
Action: Use the language server protocol (LSP) from the terminal (nvim/vim/helix + coc.nvim or native LSP). Use lazygit for the 3-way merge UI. Use the gdb/lldb TUI for breakpoints. The terminal does all of this, faster, without the chrome.
03 · The artifact

The 30-second feature ship.

From "I need to add a config flag" to "PR is up, tests passed, deploy started." Every tool in the stack plays one role. The whole sequence is muscle memory by month two.

# 1. Jump to the project (zoxide remembers frequency)
z project-name           # → jump to the project in 1 keystroke

# 2. Find the file to edit (fzf, no sidebar needed)
fzf                  # type a fragment of the name

# 3. Read the surrounding code (bat, syntax-highlighted)
bat src/config.ts    # → opens in pager, line numbers on

# 4. Search the codebase (ripgrep, 10x faster than grep)
rg 'themePref' .     # → every match, every file, in 80ms

# 5. Edit (helix or nvim, LSP-driven autocomplete)
hx src/config.ts     # → no chrome, no 4s startup, LSP works

# 6. Stage + commit + push (lazygit, keyboard-only)
lazygit              # → space=stage, c=commit, p=push

# 7. Open the PR (gh, one line, full GitHub)
gh pr create --fill  # → opens browser to the PR

# 8. Watch CI (gh, polled from the terminal)
gh pr checks --watch # → live status, no tab switching
04 · In practice

What this looks like on a real morning.

The worked example is the most useful part. Same stack, different task. The shape is always: jump, find, read, edit, commit, push, verify.

The task · 7:14am

Add a new "dark" theme preset to a personal project. The design team sent 3 hex values overnight. Tests, deploy, Slack notification — all autonomous.

The tool sequence

zoxide → fzf → bat → ripgrep → hx → lazygit → gh → btop (verify memory after deploy). Eight tools, no clicks, 22 minutes including CI.

# Real session, timestamped
7:14  z project-name                # in the project in 1 keystroke
7:15  fzf → src/themes.ts             # 4 chars typed, file selected
7:16  bat src/themes.ts | less       # scan the existing presets
7:18  rg 'ThemePreset' . --type ts    # find every usage in 80ms
7:19  hx src/themes.ts                # add the "dark" preset, LSP completes
7:24  pnpm test                       # 18s, all green
7:26  lazygit                        # stage, commit "feat: dark theme preset"
7:28  gh pr create --fill            # PR #142, 3 reviewers auto-assigned
7:31  gh pr checks --watch           # CI green, deploy preview URL ready
7:36  btop                           # memory stable, no leak, ship it

22 minutes. Zero clicks. Zero IDE tabs. The terminal ran the whole flow.
05 · Forking the stack

Same 5 categories, your 12 tools.

The 5 categories don't change. The 12 tools do. Pick the best 2026 has for each job in your stack.

Frontend dev
Add pnpm, vite (CLI), wrangler. Swap hx for hx with the Astro/Vue LSP. Add httpie for API calls.
Backend / API
Add grpcurl, jq, mitmproxy. Add lazydocker for the local stack. Keep btop for prod triage.
DevOps / SRE
Add kubectl (with kube-ps1 prompt), terraform, stern (multi-pod logs), opentelemetry-cli.
Data / ML
Add jupyter-lab (terminal UI), miller (CSV/JSON), uv (Python). Add tensorboard CLI for live metrics.

Nine stacks. One philosophy. Zero babysitting.