Image for MacBook to Mission Control Part 7: Developer Hotkey Cheat Sheet and Final Setup Checklist
Technology Jun 28, 2026 • 15 min read

MacBook to Mission Control Part 7: Developer Hotkey Cheat Sheet and Final Setup Checklist

Your complete macOS developer reference: every essential shortcut, a full setup checklist, and a smoke test to confirm your command center is ready.

Share:
Lee Foropoulos

Lee Foropoulos

15 min read

Continue where you left off?
Text size:

Contents

Six parts deep, you've gone from a factory-fresh MacBook to a fully wired development environment. Homebrew is installed, your shell is configured, iTerm2 behaves the way a terminal should, and your tools are where you expect them. Part 6 closed out the workflow layer: dotfiles, aliases, and the kind of shell configuration that makes a machine feel like yours instead of Apple's default suggestion. This part doesn't add anything new to that machine. It organizes everything you've already built into a single page you can actually use.

This is the reference document. Bookmark it now.

Series Wrap-Up: You Made It to Mission Control

What This Series Covered

Seven parts. One machine, taken from unboxing to a development environment that a working professional would recognize as serious. Part 1 established the philosophy and the initial macOS configuration. Parts 2 and 3 built the terminal foundation: Homebrew, iTerm2, and the profile settings that make the tool usable. Parts 4 and 5 handled the shell layer: Zsh, Oh My Zsh, plugins, and the prompt configuration that gives you real information at a glance. Part 6 went into dotfiles and aliases, the part where a machine stops feeling borrowed and starts feeling dialed in. Now you're here.

Developer keyboard and MacBook setup on a clean desk
Seven parts of configuration work lands here: one reference page, everything in one place.

"A development environment isn't finished when it works. It's finished when you stop thinking about it."

How to Use This Reference Article

This article has four sections: shortcuts, setup checklist, smoke test, and maintenance notes. If you've followed the series from Part 1, use the checklist to confirm nothing got missed. If you arrived here directly from a search engine, use the same checklist to audit a machine that's already been running for a while. Both workflows are valid.

One reference page beats seven browser tabs every time you need to remember a keybinding at 11pm.

The value here isn't new information. It's consolidation. Hunting across six articles to remember whether Natural Text Editing lives in Profiles or Preferences is exactly the kind of friction that breaks focus. This page exists so you don't have to do that.

macOS System Shortcuts You Will Use Every Day

Core Navigation and Window Management

These six shortcuts aren't optional. They're the operating layer underneath everything else you do on this machine.

ActionShortcut
Spotlight searchCommand + Space
Switch between appsCommand + Tab
Switch windows within same appCommand + Backtick
Open app preferencesCommand + Comma
Close window or tabCommand + W
Quit app entirelyCommand + Q
Data dashboard on a monitor representing system-level workflow
System shortcuts operate below the application layer. Get them into muscle memory before anything else.
6
macOS shortcuts worth memorizing before anything else

Why These Six Shortcuts Are Non-Negotiable

The Command + W versus Command + Q distinction causes more lost work for new Mac users than almost any other keybinding. Command + W closes the active window or tab. The app keeps running. Command + Q quits the application entirely. In a browser, that means every tab. In a code editor, that means every open file. These two keys sit next to each other on the keyboard, and confusing them at the wrong moment is genuinely painful.

Command + Backtick is the one most people don't know exists. Command + Tab cycles between applications. Command + Backtick cycles between open windows of the same application. If you have three Finder windows open, Command + Backtick moves between them. This distinction matters more than it sounds like it does.

Command + Comma is worth calling out separately because it works everywhere. Any well-built Mac app routes its preferences to this binding. iTerm2, VS Code, Slack, Figma, browsers. If you want to open settings in an unfamiliar app, try Command + Comma first. It works more often than not.

Command + Space should stay on Spotlight. Don't remap it. Other tools will try to claim this binding, and you should decline every time. Spotlight is the fastest way to open apps, find files, and run quick calculations, and it belongs on the most natural shortcut on the keyboard.

iTerm2 Shortcuts: Tabs, Panes, and the Hotkey Window

Tab and Pane Management

iTerm2's split-pane model is one of the main reasons to use it over the built-in Terminal app. These shortcuts are what make that model fast enough to be worth using.

ActionShortcut
New tabCommand + T
Split vertically (side by side)Command + D
Split horizontally (top and bottom)Command + Shift + D
Close tab or paneCommand + W
Toggle full screenCommand + Enter
Terminal window with code on a dark screen
Split panes let you run a server in one pane, tail logs in another, and keep a free prompt in a third.

The pane shortcuts follow a logic you can remember: Command + D for a vertical split because D looks like it's dividing the screen down the middle, and Command + Shift + D for horizontal because adding Shift flips the axis. It's not a perfect mnemonic, but it holds.

Hotkey Window Bindings and Conflict Avoidance

The Hotkey Window is the feature that changes how you think about terminal access. Instead of switching apps, you summon a terminal over whatever you're already looking at, do what you need to do, and dismiss it. The window appears and disappears without disrupting your focus context.

Two bindings work well for this. Control + Backtick is the recommended primary. It's easy to reach, doesn't conflict with anything, and the backtick character has a natural association with terminal work. Control + Option + Space is a solid alternative if you want something that feels more deliberate.

Bindings to Avoid

Do not assign the Hotkey Window to Command + Space (that's Spotlight), Command + Backtick (that's window cycling within an app), or Control + Space (that conflicts with input source switching in macOS and with autocomplete in several IDEs). Any of these will cause misfires that are annoying to diagnose.

Command + Enter toggles iTerm2 into full screen mode. This pairs well with a dedicated coding session where you want the terminal to own the entire display. Full screen iTerm2 with a vertical split running a dev server on the left and a free prompt on the right is a clean, distraction-free setup for focused work.

Natural Text Editing: Moving and Deleting Like a Pro

Word and Line Navigation

Natural Text Editing unlocks the shortcuts that make the terminal feel like the rest of your Mac instead of a separate, hostile environment.

ActionShortcut
Move one word left or rightOption + Left / Right Arrow
Move to start or end of lineCommand + Left / Right Arrow
Delete one word backwardOption + Delete

These bindings work exactly the same way in Notes, Mail, Safari's address bar, and every other standard macOS text field. Once Natural Text Editing is enabled in iTerm2, the terminal joins that consistent behavior instead of fighting it.

Muscle memory doesn't care which app you're in. Configure the terminal to match everything else on day one.

Why This Must Be Configured Before You Build Muscle Memory

Without Natural Text Editing enabled, Option + Arrow doesn't move the cursor by word. It sends escape sequences to the shell, which produces garbled output and does nothing useful. This is one of the most common sources of confusion for developers who are new to Mac and trying to use the terminal the way they'd use any other text input.

Where to Find This Setting

In iTerm2, go to Preferences, then Profiles, then Keys, then Key Mappings. The preset dropdown at the bottom of that panel includes "Natural Text Editing." Selecting it replaces the default bindings with the macOS-standard ones. This was covered in detail in an earlier part of the series; this section is a reference reminder, not a walkthrough.

The muscle memory argument is the real reason this matters. If you spend two weeks reaching for Option + Arrow to jump words and getting garbage characters instead, your hands start to hesitate. That hesitation doesn't go away quickly. Configuring this correctly on day one means your hands learn the right behavior from the first session, and the terminal stops feeling like a tool that requires a different mode of thinking.

Shell Editing Shortcuts: Readline and Zsh Line Control

Cursor Movement and Line Clearing

These shortcuts come from Readline, the library that handles line editing in bash, zsh, and most interactive shells. They work in every environment that uses Readline, which means they transfer across machines, across operating systems, and across most REPLs you'll encounter.

ActionShortcut
Move to beginning of lineControl + A
Move to end of lineControl + E
Delete everything before cursorControl + U
Delete everything after cursorControl + K
Delete one word backwardControl + W
Clear the screenControl + L
Overhead view of a keyboard representing typing and shell control
Readline shortcuts are shell-layer primitives. They work the same in bash, zsh, and most REPLs.
6
Readline shortcuts that work across bash, zsh, and most interactive REPLs

The practical tip worth repeating: if you've typed a long command and realized it's wrong, Control + U clears everything before the cursor instantly. That's faster than holding delete and watching characters disappear one at a time. Pair it with Control + E to jump to the end first, and you've cleared the entire line in two keystrokes.

History Search and Session Control

Control + R opens reverse history search. Start typing any fragment of a previous command and the shell surfaces the most recent match. Press Control + R again to cycle to earlier matches. If you installed fzf earlier in this series, it replaces the default history search with fuzzy matching, which means you don't need to remember the exact beginning of a command to find it.

Control + C cancels a running command and returns a prompt. Control + D sends an end-of-file signal, which exits the current shell session. These two are easy to confuse in a moment of frustration. Control + C stops what's running. Control + D closes the terminal session itself. Using Control + D when you meant Control + C will close your pane, which is annoying but recoverable. Knowing the difference before it happens is better.

These Readline bindings don't belong to any single shell. They work in Python's interactive interpreter, in the Node REPL, in psql, and in most other command-line tools that accept interactive input. Learning them once pays off across every environment you'll ever work in.


Seven parts. One machine, configured from scratch and documented all the way through. If you followed this series from the beginning, your MacBook is running a real development environment: a tuned shell, a terminal that behaves, keyboard shortcuts that match your muscle memory, and a dotfiles setup you actually understand. That's not a small thing. Most developers work for years before they sit down and build a setup this deliberately.

Keep this page bookmarked. Come back when you set up a new machine, when you onboard a teammate, or when you've been away from the terminal long enough that the shortcuts feel unfamiliar again. That's what it's here for.

fzf and tmux Shortcuts: Fuzzy Finding and Session Control

Part 6 covered secrets management: keeping credentials out of repositories, structuring .env files correctly, and building the habits that prevent the kind of accidental commit that ruins an afternoon. This part closes the series with the reference material you'll actually reach for after setup is complete.

fzf: Three Shortcuts That Replace Dozens of Commands

fzf installs three shell keybindings that do more work per keystroke than almost anything else in this setup.

Control + R is the one that changes how you work immediately. It replaces the default reverse history search with a fuzzy, scrollable, filterable list of every command you've run. Type a fragment, any fragment, and fzf narrows the list in real time. The default reverse search is linear and fragile. This is not. It's the single highest-leverage productivity upgrade in the entire terminal configuration, and most developers who install it stop using the old behavior within a day.

Control + T opens a fuzzy file finder rooted at your current directory. Start typing a filename and the list filters as you go. The selected path drops directly into your command line at the cursor position, which means you can build commands like cat, vim, or cp without remembering exact paths.

Option + C opens an interactive directory browser. Select a directory and your shell changes into it immediately. Combined with zoxide's frecency tracking from Part 5, you rarely need to type a full path again.

3
fzf keybindings that replace an entire category of shell navigation
Control + R alone justifies the entire fzf installation. Everything else is a bonus.

tmux: Window, Pane, and Session Management

Every tmux command starts with the prefix key: Control + B. Press it, release it, then press the second key. It feels awkward for the first two hours and invisible after that.

Developer working at a terminal with multiple pane splits visible on screen
tmux turns a single terminal window into a full session manager with persistent state across disconnects.

Here's the full shortcut table:

ActionKeys
Detach from sessionCtrl+B then d
New windowCtrl+B then c
Next windowCtrl+B then n
Previous windowCtrl+B then p
Vertical splitCtrl+B then %
Horizontal splitCtrl+B then "
Kill current paneCtrl+B then x
Enter copy modeCtrl+B then [

Copy mode deserves special attention. Control + B then [ puts you into a scrollback buffer you can navigate with Vim-style keys: k and j for up and down, / to search. No mouse required. This is how you read output that scrolled past before you could catch it.

The Hotkey Window connected to a persistent tmux session is the culmination of everything this series has built. One keypress summons a terminal that remembers where you were, what was running, and what you were looking at. That's the whole point.


Choosing the wrong keybinding for your Hotkey Window is the kind of mistake that only reveals itself three weeks in, when muscle memory has already formed around something broken.

The Two Hotkey Window Bindings That Work

Control + Backtick is the recommended primary binding. The backtick key sits in the upper-left corner of most keyboards, it's reachable without moving your hand, and macOS doesn't claim it in combination with Control. No system service, no standard application shortcut, nothing in the default macOS layer touches it. It's available, it's fast, and it becomes automatic quickly.

Control + Option + Space is the reliable alternative for anyone who finds backtick awkward. This comes up most often with non-US keyboard layouts where the backtick position varies or requires a modifier of its own. The Control + Option layer is largely unclaimed territory on macOS, and Space is easy to hit without looking. It's slightly less efficient than a single-character key but far better than a binding that conflicts with something else.

The Control + Option layer is the unclaimed territory of macOS keybindings. That's exactly where your custom shortcuts belong.

Three Bindings That Will Break Your Workflow

Command + Space is off-limits. Full stop. That binding belongs to Spotlight, it's deeply embedded in how macOS users navigate, and fighting it creates a conflict that surfaces at the worst possible moment. Don't remap it. Don't try to share it. Leave it alone.

Command + Backtick is the system shortcut for cycling windows within the current application. It's used constantly, often without thinking about it. Remapping it breaks standard Mac behavior in every app simultaneously, and the breakage is subtle enough that you'll spend time confused before you remember what you changed.

Control + Space conflicts with input method switching. If you work in multiple languages or have any input sources configured beyond your primary keyboard, macOS claims this binding for switching between them. Even if it doesn't cause problems immediately, it will the moment a colleague with a different language configuration tries to use your machine, or the moment you add a second input source yourself.

Binding Selection Rule

When in doubt, reach for the Control + Option layer. It's the part of the keyboard that macOS and most applications have left alone. Your custom bindings will live there without conflict.


Final Setup Checklist: Every Step, Every Category

This checklist works two ways. Use it sequentially on a new machine. Use it as an audit on an existing one. Either way, every unchecked box is a gap in the setup.

9
categories covered in the complete setup checklist

macOS Basics, Homebrew, and Command-Line Tools

macOS Basics and Homebrew 0/7

Terminal, Font, Prompt, and Shell Productivity

Terminal, Font, and Prompt 0/9

Git, GitHub, SSH, and Secrets Management

Git, GitHub, SSH, and Secrets 0/12

Runtimes, Editor, Containers, and tmux

Runtimes, Editor, Containers, and tmux 0/13

Every item on this list has a corresponding section in the series. If something is unchecked and unfamiliar, the relevant part is worth revisiting before moving on.


First Project Smoke Test: Prove the Whole Stack Works

Reading a checklist and running a checklist are different things. The smoke test below takes about five minutes and either confirms the entire stack is functional or surfaces the one broken link before it costs you an hour mid-project.

Setting Up the Test Workspace

Run these commands in sequence:

bash
1mkdir -p ~/Projects/project-workspace
2cd ~/Projects/project-workspace
3git init
4code .
5ll
6tree -L 2
7tmux new -s dev

Each command is doing real verification work, not just filling time.

Terminal window showing a series of diagnostic commands running successfully
A five-minute smoke test catches broken links in the setup chain before they surface during actual project work.

What Each Command Is Actually Verifying

mkdir -p ~/Projects/project-workspace confirms your shell is navigating correctly and the Projects directory structure exists. cd into it confirms zoxide will start tracking this directory for future fuzzy navigation.

git init does more than initialize a repository. It confirms Git is installed, your identity is configured, and the default branch name is set to main. If this returns an error about your identity, that's the Git configuration section of Part 4 asking for attention.

code . confirms the editor CLI is on your PATH. If this command isn't found, the editor install is incomplete regardless of what the GUI shows.

ll confirms the eza alias is active. If you see the default ls output instead of the formatted eza output with icons, the alias block in .zshrc isn't loading correctly.

tree -L 2 confirms tree is installed. Small thing, but it comes up constantly.

tmux new -s dev confirms tmux is functional and session naming works.

After the tmux session is running, complete these manual verification steps:

  • Detach with Ctrl+B then d, then reattach with tmux attach -t dev
  • Open the Hotkey Window with your configured binding and confirm it connects to the same session
  • Run rg "TODO" . and confirm ripgrep responds
  • Run fd --extension md . and confirm fd responds
  • Run echo '{"status":"ok"}' | jq . and confirm jq parses it; pipe through bat --language json for the syntax-highlighted version
  • Confirm the Starship prompt renders glyphs without boxes
  • Run git status and confirm the branch name appears in the prompt

Save the Smoke Test

Drop these commands into a shell script at ~/dotfiles/scripts/smoke-test.sh and commit it. After any major macOS update or new machine setup, one command reruns the entire verification sequence. Future you will appreciate the ten minutes this takes now.

A broken link caught here takes two minutes to fix. The same broken link discovered mid-project, when you're context-switched into something else entirely, takes twenty.


Ongoing Maintenance: Keeping the Command Center Sharp

Setup is a moment. Maintenance is the practice that determines whether the setup stays useful or slowly decays into a collection of outdated packages and forgotten configurations.

Homebrew Hygiene and Package Updates

Three commands. Run them weekly, or at minimum before starting any significant project work.

brew update fetches the latest package definitions from Homebrew's repository. It doesn't change anything on your system; it just updates the catalog so the next command knows what's current.

brew upgrade installs newer versions of every outdated package. This is where the actual changes happen. Most upgrades are uneventful. Occasionally a major version bump changes behavior, which is exactly why you want to run this on a quiet afternoon rather than the morning of a deadline.

brew doctor audits your Homebrew installation and reports anything unusual: broken symlinks, outdated Xcode components, directories with wrong permissions. It doesn't fix anything automatically, but it tells you what needs attention before it becomes a problem.

3
Homebrew maintenance commands worth running every week

brew cleanup deserves a mention on its own. After upgrades, old package versions sit on disk doing nothing. brew cleanup removes them. On a machine that's been running for a year without cleanup, this can recover several gigabytes.

A developer environment is never truly finished. A well-maintained one compounds productivity over time. A neglected one quietly accumulates debt.

Dotfiles, Secrets, and SSH Key Rotation

Keep your dotfiles in a version-controlled repository and commit after any meaningful configuration change. Not every tweak warrants a commit, but any change you'd be frustrated to lose does. The repository is also the mechanism for moving your configuration to a new machine in under an hour.

Document project-specific setup requirements in a README.md or SETUP.md at the project root. Memory is not a reliable storage medium for "you need to set these three environment variables before this works."

Review SSH keys on a regular schedule. Remove keys associated with machines that no longer exist. A key for a laptop you sold two years ago is just an open door you forgot about. Rotate keys after any security incident, no exceptions.

Rotate secrets and API keys on a schedule and immediately whenever a team member leaves a project. The moment someone who had access to a credential is no longer on the project, that credential is no longer trustworthy.

Revisit your hotkey bindings after three or four weeks of real use. Muscle memory is the most honest feedback mechanism available. Shortcuts that feel natural after a month are keepers. Ones you keep looking up or accidentally triggering are worth reconsidering.


Seven parts. Seven layers of configuration, tooling, and methodology built on top of a stock macOS install. If you've followed this series from the beginning, you now have a terminal environment that's faster than the default, a Git workflow that's wired to GitHub correctly, secrets management that won't embarrass you in a code review, and a Hotkey Window that drops you into a persistent session from anywhere on the desktop.

Most developers spend years accumulating pieces of this setup through trial, error, and Stack Overflow archaeology. You built it systematically. The smoke test either confirms it's all working or points you directly at the one thing that isn't. Either outcome is a good one.

The environment is yours now. Maintain it, extend it, and commit your changes.

How was this article?

Share

Link copied to clipboard!

You Might Also Like

Lee Foropoulos

Lee Foropoulos

Business Development Lead at Lookatmedia, fractional executive, and founder of gotHABITS.

🔔

Never Miss a Post

Get notified when new articles are published. No email required.

You will see a banner on the site when a new post is published, plus a browser notification if you allow it.

Browser notifications only. No spam, no email.

0 / 0