What this covers
Cursor markets itself as “VS Code with AI inside” but the actual learning curve is figuring out which AI surface to use when: Tab completion, Inline edit, Composer, Chat, and Agent each have a real sweet spot and a real failure mode. This guide walks through install, the first indexing run, and four real edits — one per AI surface — so by the end of an hour you know which keystroke to reach for.
Who this is for
Developers who want AI inside their editor rather than in a separate chat tab. Coming from plain VS Code or JetBrains, the transition is friction-free. If you want a wider 30-minute walk-through (Inline vs Composer vs Chat, indexing, @Files, rollback), start with Cursor for beginners — 30 minutes to a working loop.
When to reach for it
You would rather stay in an IDE than a terminal agent, and you want one place for autocomplete, multi-file edits, and Q&A. If you only want occasional chat-based code help instead of an in-editor tool, compare against a Gemini coding-help workflow first.
Before you start
- Have a real repository to test in — not a fresh
npm create. Cursor’s value shows up at scale. - Know your project conventions: lint rules, formatter, test command. Cursor benefits from a clean baseline.
- Pick a small, low-risk task for the first AI edit. The first task should be reversible.
- Decide whether to log in with model API keys (Cursor Pro) or use Cursor’s bundled credits.
Step by step
- Install Cursor from
cursor.com. The first launch offers to import VS Code settings — accept; the import is non-destructive. - Open a project. Indexing starts automatically and can take 30 seconds to a few minutes depending on repo size. If the repo is new to you, run a guided AI codebase tour in Chat while indexing finishes. Add a
.cursorignorefornode_modules, build output, and large data files before the first index. - Try Tab completion first. Type a function signature, pause, accept the suggestion. Tab is the lowest-stakes AI surface and the one you will use 100 times a day.
- Try Inline edit (Cmd-K on macOS, Ctrl-K elsewhere). Select a function, hit the shortcut, describe a change (“convert this to async/await and preserve error handling”). Knowing when to use agents vs autocomplete keeps you from overusing Composer for one-line tweaks.
- Try Composer for multi-file edits. Open Composer (Cmd-I), describe the task in 2-3 sentences with explicit file scope: “In
src/api/, replace all uses ofrequest.json()withawait request.json(). Do not touch tests.” Review each diff before accepting. - Try Chat (Cmd-L) for explanations and exploration. Chat does not edit code by default — it answers and you decide what to apply.
First-run exercise
- Pick a small, isolated task: rename a variable across a few files, add a missing prop type, or add JSDoc to one module. Reversible, low-risk.
- Use Inline edit for one variant, Composer for another. Compare the experience.
- Note which surface fit which task. The pattern is stable: single-function changes → Inline; cross-file changes → Composer; “why does this code do X?” → Chat; “complete the next line” → Tab.
- Commit between AI edits. Rollback is easier when each step has its own commit.
Quality check
- Review every Composer diff. Cursor will sometimes touch a file you did not intend; reject those hunks.
- Run your full test suite after multi-file edits. Cursor catches type errors but not behavioral regressions.
- Check that your
.cursorignoreis excluding what you expect. Indexing private data or build output is both slow and a privacy risk. - Verify the model is the one you selected. Cursor occasionally falls back to a cheaper model under load.
How to reuse this workflow
- Build a
.cursorignoretemplate you reuse across projects:node_modules/,dist/,*.log, large data files, secrets. - Add
.cursorrules(or modern equivalent) with your team’s coding conventions. Cursor reads them as system context. - Save common Inline edit prompts as snippets (“convert to async/await,” “add types,” “extract to helper”).
- Re-test the surfaces quarterly. Cursor ships new features fast and keystrokes can shift.
Recommended workflow
Tab for autocomplete → Inline for single-function changes → Composer for multi-file changes (with explicit scope) → Chat for explanations and code archaeology → commit between surfaces.
Common mistakes
- Letting Composer run unattended on a dirty repo. If something goes wrong, you cannot tell what Cursor changed vs what you changed.
- Skipping
.cursorignore. Indexingnode_modulesis slow and pollutes context with irrelevant files. - Letting initial indexing run for hours without checking why (why indexing never completes).
- Editing a file in another window while Cursor still has a stale view of it (IDE state out of sync).
- Layering project, workspace, and user
.cursorruleson top of each other and getting silent contradictions (Cursor config conflict). - Using Composer for a one-line change. It is overkill and the diff review takes longer than the edit.
FAQ
- Is Cursor different enough from VS Code to justify switching?: If you write code daily, the AI surfaces alone are worth it. The rest is VS Code with familiar keybinds.
- How does Cursor compare to Claude Code or Codex?: Cursor is an editor-first AI; Claude Code and Codex are agent-first. Cursor wins for IDE workflow, the others for hands-off task running.
- Do I need a paid plan?: Free works for evaluation. Daily use hits limits quickly; Pro is worth it within a week.
- Will Cursor work offline?: Editor yes; AI features require network. Indexing is local.
Related
Tags: #AI coding #Tutorial #Cursor