Creating a Modern Terminal Setup

Table of Contents(6 sections)
I've been tweaking my terminal for years. There were periods where I spent more time configuring my prompt than actually writing code (the classic trap). But after enough iterations, I landed on a setup that's fast, useful, and doesn't require me to remember arcane config syntax every time I touch a new machine.
Modern Linux & Terminal Mastery Series
The Foundation
24-bit color. If your terminal still looks like a 1980s terminal, fix this first. Most modern emulators support it out of the box, and the difference is noticeable the moment you open a colored diff or a lint output.
Infinite scrollback. Nothing worse than a complex command scrolling off-screen right when you need to reference it. Set your scrollback to unlimited or a very large number.
Autocomplete. Fish shell does this natively. With Zsh you need a plugin. Either way, once you get used to tab completing git branches and file paths, going back to a bare shell feels broken.
Pick an Emulator
iTerm2 on macOS, Kitty or GNOME Terminal on Linux. GPU acceleration matters more than you'd think: it keeps the terminal responsive when you're running something that spews logs at high speed.
Swap Your Shell
Default bash is fine but limited. Zsh with a framework or Fish out of the box gives you autocomplete, theming, and plugin management without fighting .bashrc conventions from 1999.
Set Up a Prompt
Starship is my pick. It works across shells, shows Git status, Python version, Node version, and it's fast. No perceptible delay on render.
Where People Get Stuck
The dotfile rabbit hole is real. You'll find a cool prompt theme, then a plugin that depends on another plugin, and suddenly you're reading a 200-line .zshrc trying to figure out why git status takes two seconds.
My rule: if a terminal customization takes more than 10 minutes to configure, it better save me 10 minutes a week or it gets cut. By that standard, most prompt themes and half the popular Zsh plugins don't make the cut.
What Actually Survived
- A minimal Starship prompt showing Git branch, Python version, and exit code.
zsh-autosuggestions: grays out recently used commands as you type. Saves more keystrokes than anything else I've installed.zsh-syntax-highlighting: red text for invalid commands before you press enter. Catches typos constantly.- A handful of aliases that I actually use. Not the 50-line alias dump from a blog post I copied once and never edited.
Your setup should reflect how you actually work, not how some blog post said you should work. Start with the three things above, use them for a week, then decide what's missing.
Terminal Series
- Unwritten Rules of Terminal Programs: Why
qquits,Ctrl-Ccancels, and other conventions - Why Pipes Sometimes Get Stuck: Buffering Explained: How stdio buffering breaks pipelines
- Creating a Modern Terminal Setup (this post)
Free Developer Tool: AI CLI & Terminal Output Cleaner
Sharing terminal outputs, compiler logs, or AI CLI traces in GitHub issues or documentation? Use our free AI CLI & Terminal Output Cleaner to strip ANSI escape codes, prompt characters, and timestamps instantly.
Clean Terminal Logs for LLMs & Documentation
When sharing terminal outputs into AI chat prompts, bug tickets, or documentation, ANSI escape color sequences, timestamps, and shell prompts often corrupt the formatting. Use our interactive cleaner below to strip ANSI codes, line numbers, and shell noise instantly:
You Might Also Like
- Agent-Driven Development with GitHub Copilot: A New Era in Software Collaboration
- Rethinking Risk in the Age of AI
- What I've Learned Building Checkout Flows with Wallets and AI Agents
- LangChain vs LlamaIndex: Production RAG Pipeline Guide
Frequently Asked Questions
Free In-Browser Developer Tools
Clean AI CLI logs, build cron expressions, decode JWTs, and calculate chmod permissions offline.
Related Articles

Unwritten Rules of Terminal Programs
Why 'q' quits almost everything, how Ctrl-C became a universal kill switch, and the POSIX ghosts that make the command line feel like home.
Read more
Why pipes sometimes get "stuck": buffering
The first time my terminal froze mid-pipeline I spent an hour debugging the wrong thing. Here's what was actually happening and how to fix it in seconds.
Read more
SSH and SCP: The Two Tools Every Developer Should Actually Understand
A no-fluff guide to SSH and SCP - covering port 22, key-based auth, the SSH config file, secure file transfers, and server hardening tips every developer should know.
Read more