← Back to Blog
Reference•9 min read

macOS Terminal Shortcuts: The Complete Reference

LTLayoutCLI Team

The macOS Terminal shortcuts worth memorising are few: ⌘K clears the screen, ⌘T opens a new tab, ⌃R searches your command history backwards, ⌃A and ⌃E jump to the start and end of the line, and ⌃C stops whatever is running. Everything below is refinement on those five.

This is a reference you can skim once and come back to. It covers the built-in macOS Terminal.app bindings, the shell (readline/Emacs) bindings that work in any terminal, and how to rebind anything that does not suit you.

Terminal.app shortcuts (window, tab, and view)

These are handled by Terminal.app itself, so they work regardless of which shell you run.

ShortcutAction
⌘NNew window
⌘TNew tab in the current window
⌘WClose the current tab (or window)
⌘KClear the screen and scrollback
⌘+ / ⌘− / ⌘0Grow, shrink, or reset the font size
⌃⌘FToggle full screen
⌘⇧KClear the scrollback buffer only
⌘,Open Settings

A common surprise: Terminal.app has no split panes. It gives you tabs and windows and stops there. If you want two shells visible at once, you need a different terminal app or a multiplexer — see how to split the terminal on macOS.

Shell shortcuts (line editing, history, process control)

These come from the shell's line editor, not the app. On macOS, zsh and bash both ship with an Emacs-style keymap by default, so they work the same in Terminal.app, iTerm2, and every other macOS terminal.

ShortcutWhat it does
⌃A / ⌃EGo to the start / end of the line
⌃B / ⌃FMove back / forward one character
⌥B / ⌥FMove back / forward one word
⌃U / ⌃KDelete from the cursor to the start / end of the line
⌃W / ⌥⌫Delete the previous word
⌃RReverse-search your command history
⌃P / ⌃NPrevious / next command in history
⌃LClear the screen (keeps scrollback, unlike ⌘K)
⌃C / ⌃DCancel the running command / send end-of-file
⌃ZSuspend the foreground job (fg to resume)
⌥.Insert the last argument of the previous command
TabComplete a path or command; press twice to list options

Why Option-key shortcuts silently fail

If ⌥B types a special character instead of moving the cursor, your Option key is being treated as a character composer rather than Meta. Fix it in Terminal → Settings → Profiles → Keyboard and tick Use Option as Meta key. This single checkbox is the most common reason people give up on word-jumping shortcuts.

History shortcuts beyond ⌃R

⌃R is the one to learn first: type a fragment, and zsh shows the most recent matching command. Press ⌃R again to walk further back, Enter to run it, or Esc to edit it before running. Beyond that:

  • !! — repeat the previous command (useful as sudo !!).
  • !$ — the last argument of the previous command.
  • !word — the most recent command starting with word.
  • history then !120 — run entry 120 by number.

If you find yourself reaching for ⌃R constantly, consider a fuzzy history search like fzf bound to ⌃R — it turns history recall into a live-filtered list.

Rebinding anything

App-level shortcuts are edited in System Settings → Keyboard → Keyboard Shortcuts → Terminal. Shell-level bindings live in your ~/.zshrc via bindkey, for example:

# Make ⌥← and ⌥→ jump by word (many setups need this with zsh)
bindkey "^[[1;3D" backward-word
bindkey "^[[1;3C" forward-word

# Map ⌃Space to autosuggest-accept if you use zsh-autosuggestions
bindkey "^ " autosuggest-accept

The exact escape sequences differ between terminals, so the reliable way to find one is to press ⌃V followed by the key combination in your shell — zsh prints the literal sequence to paste into bindkey.

Do you need to learn all of this?

No. Learn the five from the top of this page, then add one binding per week as the need appears. Shortcuts only pay off after they stop being conscious, and that takes repetition, not volume. If you are optimising the whole workflow rather than just the keyboard, the keyboard-first workflow guide covers the broader principles.

Ready to upgrade your terminal?

Download LayoutCLI and keep every session in one place.

Download for macOS