A good terminal setup is something I consider a core part of my development workflow. Here's everything I use to make my macOS terminal fast, readable, and pleasant to work in every day.
The default macOS Terminal app works fine, but iTerm2 is just on another level. It's free, open-source, and packed with features I use daily. The main reasons I switched:
⌘D (vertical) or ⌘⇧D (horizontal)⌥Space) that drops the terminal down from anywhere, like a Quake console⌘F to search the full terminal buffer with regex support⌘↑ / ⌘↓Install it from iterm2.com or via Homebrew:
brew install --cask iterm2Oh My Zsh is a community-driven framework for managing Zsh configuration. On its own Zsh is powerful, but Oh My Zsh makes it genuinely enjoyable — it comes with hundreds of plugins, helpers, and a thriving theme ecosystem. It's the first thing I install on any new Mac.
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"Your configuration lives in ~/.zshrc. After installing Oh My Zsh, that file is automatically populated with sensible defaults.
Spaceship is a minimalist, highly configurable Zsh prompt. What makes it great is how much information it surfaces without feeling cluttered — git branch, dirty status, Node.js version, package version, and more, all only when relevant.
Install it via Oh My Zsh (recommended):
git clone https://github.com/spaceship-prompt/spaceship-prompt.git "$ZSH_CUSTOM/themes/spaceship-prompt" --depth=1
ln -s "$ZSH_CUSTOM/themes/spaceship-prompt/spaceship.zsh-theme" "$ZSH_CUSTOM/themes/spaceship.zsh-theme"Then set the theme in your ~/.zshrc:
ZSH_THEME="spaceship"Spaceship is section-based, so you can configure exactly which segments appear and in what order by adding to your ~/.zshrc:
SPACESHIP_PROMPT_ORDER=(
user dir git node package venv line_sep char
)zsh-autosuggestions brings Fish shell's killer feature to Zsh — as you type, it shows a greyed-out suggestion based on your command history. Hit → or End to accept the full suggestion, or ⌥→ to accept word-by-word. It makes navigating repetitive commands (long git commands, npm scripts, docker commands) incredibly fast.
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestionsThen add it to the plugins list in ~/.zshrc:
plugins=(git zsh-autosuggestions)zsh-syntax-highlighting highlights commands as you type them — valid commands turn green, invalid ones turn red, and strings/arguments are colored distinctly. It's a small thing that catches typos before you even hit Enter.
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlightingAdd it to your plugins — make sure it's last in the list:
plugins=(git zsh-autosuggestions zsh-syntax-highlighting)After editing ~/.zshrc, reload the shell:
source ~/.zshrc