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.

Describe the business value, not the steps

← Tips Prompting

Describe the business value, not the steps

Tell Claude what you want the outcome to be, not which functions to call. Claude is better at finding the right code path than you are at prescribing it.

beginner

Bad: “Call the fetchUsers function, then loop over the result and filter by status === 'active', then render them in a table.”

Good: “I want a page that shows only active users.”

When you prescribe the steps, you constrain Claude to your solution — which may be worse than what it would write from scratch. Tell it the outcome (the business value, the user-visible behaviour) and let it pick the implementation. Then review the diff.

The one exception: if you have a hard constraint (a specific function MUST be used, a specific library is mandated), pin that as a constraint — but still let Claude pick the rest.

A get-unstuck move when the outcome feels fuzzy in your own head: describe the user and let Claude phrase the outcome for you.

A retail customer-service is using this dashboard. They need to see — at a glance — which customers complained this week. Help me phrase the outcome I should be asking for.

Claude turns “I want… something useful for agents” into a sharp outcome line. Reuse that line as the actual ask.

A template for the “why”

When you want this to be a habit rather than a thing you remember sometimes, there’s a shape worth memorising:

I’m working on [the larger task]. It’s for [who]. This output would let them [why it matters]. With that in mind, [the actual request].

Worked example:

I’m preparing the quarterly complaints review. It’s for the retail operations leads. They need to decide where to put two extra people next quarter. With that in mind, summarise complaints-q3.csv by product line.

The last sentence on its own would have produced a competent, generic summary. With the first three, Claude knows the summary needs to support a staffing decision — so it leads with volume and movement rather than, say, sentiment.

The reason isn’t padding. It’s what lets Claude make the hundred small judgement calls you didn’t specify, in the direction you’d have picked.

Next tip →

Iterate, don't restart

When Claude's answer is wrong, don't `/clear` and start over. Tell it what's wrong and let it adjust — you keep all the context you've already built up.