Skip to content

Keyboard

Shortcuts

Everyone learns Esc. These are the rest — all checked against Claude Code itself, not copied off a blog.

The three to learn first

If you remember nothing else.

  • Esc Esc
    Stop Claude mid-action The moment Claude starts doing something you did not intend.
  • Esc thenEsc Esc thenEsc
    Clear the input box Your half-written prompt has turned into a mess and you want a clean line.
  • Shift +Tab Shift +Tab
    Cycle permission mode Starting an exploration (plan) or letting an agreed plan run (accept edits). On older Windows setups without VT mode, this is Meta+M instead.

Writing the prompt

Composing, searching, pasting.

  • Ctrl +J Ctrl +J
    Start a new line without sending Any prompt longer than one sentence.
  • Ctrl +R Ctrl +R
    Search your prompt history "What did I type last week that worked?" Inside the search, Ctrl+S cycles the scope: this session → this project → everywhere.
  • Ctrl +S Ctrl +S
    Park the half-written prompt You are three sentences into a prompt and need to go check something.
  • Ctrl +G Ctrl +G
    Edit the prompt in your real editor Writing anything long or carefully structured.
  • Ctrl +V Alt +V
    Paste an image Anything visual. Annotate the screenshot first and it works even better. Ctrl+V, not Cmd+V — macOS keeps Cmd+V for its own paste. Windows and WSL use Alt+V. On WSL both Ctrl+V and Alt+V work.
  • Option +T Alt +T
    Toggle thinking for the next turn One hard question in the middle of otherwise simple work.
  • Ctrl +_ Ctrl +_
    Undo in the input box You deleted half a prompt by accident.

Seeing what happened

What Claude did and what it plans to do.

  • Ctrl +O Ctrl +O
    Toggle the full transcript You want to know what it actually did, not the summary.
  • Ctrl +T Ctrl +T
    Toggle the task checklist Any multi-step task, before it gets far.

Running the session

Long jobs, models, the terminal.

  • Ctrl +B Ctrl +B
    Send the running job to the background A long build, test run, or search you do not want to sit and watch.
  • Option +P Alt +P
    Switch model Between tasks — rarely a good idea mid-task.
  • Option +O Alt +O
    Toggle fast mode Straightforward work where you would rather have speed than depth.
  • Ctrl +Z Ctrl +Z
    Step out to the shell without quitting You need the terminal for one command and do not want to lose the session. Terminal-level shortcut (Unix SIGTSTP), not a Claude Code binding. Windows has no direct equivalent.

The keys are the same on both systems — only the modifier's name changes (macOS calls Alt Option). Run /keybindings in any session to see exactly what is bound on your machine.

Custom slash commands — turn repeated workflows into one keystroke

← Tips Workflow & commands

Custom slash commands — turn repeated workflows into one keystroke

If you find yourself typing the same three times, write it as a custom . Drop a file in `.claude/commands/`, invoke with `/yourname`. it and the whole team gets the shortcut.

both External reference ↗

The single biggest power-user unlock in is also the easiest. A custom is a file with your in it, dropped into .claude/commands/ at the root.

Minimal example. Create .claude/commands/review-pr.md:

Fetch the diff for PR $ARGUMENTS using `gh pr diff $ARGUMENTS`.

Review the diff for:
- Logic errors and missing edge cases
- Security issues (auth, input handling, secret leaks)
- Missing error handling

Skip style and naming comments — we have a linter for that.

Return a structured list:
- Critical (must fix before merge)
- Important (should fix)
- Minor (nice to have)

Now in any Claude in that repo, type /review-pr 142 and Claude reviews 142 with your house rules. $ARGUMENTS gets replaced with whatever you typed after the command.

A handful of patterns the team has found load-bearing:

  • /commit — stage, write a conventional message in our format, show it for confirmation, then commit.
  • /release-notes — read commits since the last tag, produce changelog entries grouped by feature/fix/chore.
  • /explain-this — read $ARGUMENTS (a file or function), explain what it does and why it exists, in plain language.
  • /triage — read open from or Jira, classify by area, suggest priorities.

Three things that make commands compound in value:

  1. They live in . Commit .claude/commands/ and every colleague who clones the repo gets the same shortcuts. Onboarding becomes “the commands are documented in .claude/commands/”.
  2. They embed output. A line like Current diff: !`git diff HEAD` runs git diff HEAD and pastes the output into the prompt. Claude sees the actual diff, not a description of one.
  3. They can reference files with @. @CLAUDE.md in a command body pulls the file content into context. Useful for commands that should always re-read a specific doc before running.

When to make a slash command: any prompt you’ve typed three times. Any prompt the team has explained more than once. Any prompt where the boilerplate (file paths, output format, constraints) is the same and only the topic changes.

Don’t write the markdown by hand — ask Claude

The shape above isn’t a syntax to memorise. Describe the workflow and ask Claude to create the command file for you:

Create a /triage slash command for this repo. It should fetch open GitHub issues via gh, group them by area (auth, billing, ops), and output a markdown table sorted by priority.

Claude scaffolds .claude/commands/triage.md with the right shape — $ARGUMENTS, !-shell blocks, @-file refs where they help. Review the diff like any other change, then commit it so the whole team gets the shortcut.

are the richer, -driven sibling of commands — same idea, more knobs. Start with commands; reach for skills when you need stricter control ( selection, allowed-tools restrictions, auto-invocation rules).

Next tip →

Subagents — delegate the file-reading so your main session stays clean

A runs in its own , does its exploration, and reports a summary. Your main never loads the 40 files it had to read. Best for research-heavy tasks where the input is large and the answer is small.