# Les 3 — Lesstof ## Cursor — AI-Powered Code Editor **Vak:** AI Fundamentals **Vorige les:** Les 2 — OpenCode **Volgende les:** Les 4 — TypeScript Fundamentals --- ## Inhoud 1. [Wat is Cursor](#1-wat-is-cursor) 2. [Setup + eerste keer opstarten](#2-setup--eerste-keer-opstarten) 3. [De vier kern-features](#3-de-vier-kern-features) 4. [Chat (Cmd+L)](#4-chat-cmdl) 5. [Inline Edit (Cmd+K)](#5-inline-edit-cmdk) 6. [Composer / Agent (Cmd+I)](#6-composer--agent-cmdi) 7. [Tab — predictive completion](#7-tab--predictive-completion) 8. [@-mentions — context erbij halen](#8--mentions--context-erbij-halen) 9. [.cursorrules — project-context](#9-cursorrules--project-context) 10. [Debug-flow met AI](#10-debug-flow-met-ai) 11. [Wanneer Cursor vs Console](#11-wanneer-cursor-vs-console) --- ## 1. Wat is Cursor **Cursor** is een AI-first code editor — een fork van VS Code met AI-features verweven in elk onderdeel. Geen plugin, geen sidebar — AI is overal: tab-completion, chat, inline edit, agent mode. ### Waarom Cursor? - Vertrouwde VS Code interface (alle extensies werken) - AI features die écht in je workflow zitten - Multi-file edits met diff-preview - Background Agents (later in de leerlijn — Les 15) - Werkt met OpenAI, Anthropic, of eigen API keys ### Cost - **Hobby (gratis)** — limited, Tab completion, basic chat - **Pro ($20/maand)** — alles, onbeperkt, Background Agents - **Business** — teams, SSO, audit Voor deze leerlijn: Pro aanrader. Hobby werkt voor leren maar je raakt rate-limits. --- ## 2. Setup + eerste keer opstarten ### Installatie Download van cursor.com — installeer net als VS Code. ### Eerste opstarten 1. Sign in met email of GitHub 2. Cursor vraagt: "Import VS Code settings?" — Ja 3. Kies thema, snelkoppelingen 4. Opt-in op AI training of opt-out (privacy keuze) ### Model kiezen Settings → Models. Defaults: - Cursor Auto (default — Cursor kiest beste model) - Claude Sonnet 4.6 (default voor code) - GPT-5 (alternatief) - o3 (reasoning — trager maar slimmer) Vuistregel: Sonnet voor 90%, o3 voor complex. ### Een project openen Twee opties: - File → Open Folder (zoals VS Code) - Terminal: `cursor .` in je project-folder --- ## 3. De vier kern-features Cursor heeft veel features. Vier die je dagelijks gebruikt: | Feature | Shortcut | Wanneer | |---------|----------|---------| | **Tab** | (auto) | Voltooi-suggesties tijdens typen | | **Inline Edit** | `Cmd+K` | Korte edit op selectie of cursor-positie | | **Chat** | `Cmd+L` | Vragen stellen, code uitleggen | | **Composer/Agent** | `Cmd+I` | Multi-file edits, refactors | Deze leren = 80% van Cursor's waarde gebruiken. --- ## 4. Chat (Cmd+L) **Wat:** sidebar-chat. Type vraag, krijg antwoord. Net als ChatGPT maar mét je code als context. ### Wanneer - Code uitleggen ("wat doet deze functie?") - Algemene vragen tijdens coden ("hoe gebruik je useMemo?") - Debug-hulp ("waarom werkt dit niet?") ### Context erbij - `@filename` — voeg specifieke file toe als context - `@Codebase` — hele repo (gebruikt embeddings) - `@Web` — search het web - `@Docs` — geïmporteerde documentatie - Sleep een file naar chat — toegevoegd als context ### Agent-mode binnen Chat Switch knop bovenaan: Ask | Agent. Met Agent mode kan Chat ook files bewerken — vergelijkbaar met Composer. --- ## 5. Inline Edit (Cmd+K) **Wat:** edit-popup op je cursor-positie. Beschrijf wat je wilt, AI past selectie of nieuwe code aan. ### Voorbeelden Selecteer een functie + `Cmd+K`: > "Voeg error handling toe" AI past selectie aan, diff zichtbaar, accept/reject. Lege regel + `Cmd+K`: > "Genereer een TypeScript interface voor een User met name, email, role" AI inserts code. ### Wanneer - Snelle wijziging op één plek - Code generaten tussen bestaande regels - Selectie aanpassen Voor multi-file edits → Composer. --- ## 6. Composer / Agent (Cmd+I) **Wat:** de zwaarste AI-feature. Multi-file edits met preview van alle diffs. ### Voorbeeld `Cmd+I` opent Composer panel: > "Voeg een /about pagina toe met team-leden in een grid. Match styling van homepage. Gebruik Tailwind. Maak een aparte component voor team-member." Composer: 1. Leest `app/page.tsx` voor stijl 2. Maakt `app/about/page.tsx` 3. Maakt `components/TeamMember.tsx` 4. Toont alle diffs Jij accepteert per file of "Accept All". ### Wanneer - Nieuwe features (multi-file) - Refactors - Bugfixes die meerdere files raken ### Terminal commands Composer kan ook terminal-commands runnen — vraagt approval. "Run pnpm install" → Composer doet het. --- ## 7. Tab — predictive completion Cursor's Tab-completion ziet **wat je gaat typen voordat je 't typt**. Vergelijkbaar met GitHub Copilot maar slimmer (gebruikt je hele file + recent edits). ### Hoe gebruiken - Type — suggesties verschijnen grijs - `Tab` — accepteer - `Esc` — afwijzen ### Cursor Tab vs Copilot Cursor Tab kan: - Multi-line suggesties (hele functie ineens) - Cursor verplaatsen naar volgende edit-locatie (handig bij refactors) - Suggesties op basis van wat je net hebt geschreven elders Verschil voelbaar na een dag gebruik. ### Wanneer uitzetten Soms ga je sneller zonder. Cmd+Shift+P → "Cursor Tab" → toggle. --- ## 8. @-mentions — context erbij halen `@` in chat of Composer = context kiezen. ### Soorten | Mention | Wat | Voorbeeld | |---------|-----|-----------| | `@File` | Specifieke file | `@app/page.tsx` | | `@Folder` | Hele folder | `@components/` | | `@Codebase` | Repo via embeddings | `@Codebase` | | `@Docs` | Geïmporteerde docs | `@Next.js` | | `@Web` | Web search | `@Web "Next.js 16 caching"` | | `@Git` | Recent commits | `@Git` | | `@Definitions` | Symbols | `@Definitions:UserController` | ### Goede prompts Zonder mentions: AI gokt welke files relevant zijn (langzamer, soms fout). Met mentions: AI heeft exact wat 't nodig heeft. ``` @app/api/auth/route.ts @lib/supabase.ts Voeg een endpoint toe /api/user dat de logged-in user returnt. Gebruik supabase auth.getUser(). ``` --- ## 9. .cursorrules — project-context **`.cursorrules`** = markdown-file in project-root die Cursor leest bij elke prompt. Net als AGENTS.md in Les 2. ### Voorbeeld ```markdown # Cursor Rules — QuickPoll ## Stack - Next.js 16 App Router - TypeScript strict mode - Tailwind v4 - Supabase (DB + Auth) ## Conventies - Server Components default, "use client" alleen waar nodig - Tailwind classes inline, geen CSS-files - Geen comments tenzij gevraagd - Volg bestaande naming (camelCase functions, PascalCase components) - Throw geen errors uit RSCs — return { error } object ## Verboden - Gebruik geen Next.js Pages Router (alleen App Router) - Geen any-types in TypeScript - Geen inline styles ``` ### Effect AI checkt deze rules bij elke prompt. "Maak een Server Component" wordt automatisch "use client"-vrij. "Voeg comment toe" wordt overgeslagen. ### Beperkingen - Cursor's parsing is niet 100% strikt — soms vergeet AI rules - Hou 'm tussen 30-200 regels (te lang = vergeten) - Test of rules echt werken — soms moet je expliciet refereren --- ## 10. Debug-flow met AI ### Pattern 1 — Console error Console error → kopieer → in chat plakken: ``` TypeError: Cannot read property 'name' of undefined at UserCard (components/UserCard.tsx:12) ``` AI: leest UserCard.tsx, vindt waar `name` undefined kan zijn, suggereert fix. ### Pattern 2 — Onverwachte output ``` Mijn fetchData() returnt undefined ipv users. Hier is de code: @lib/api.ts Wat gaat er mis? ``` AI: leest code, identificeert (vaak) async/await issue of missende return. ### Pattern 3 — Tests falen Run test → copy output → chat: ``` Test "should return user list" faalt: Expected: Array(3) Received: undefined @__tests__/api.test.ts @lib/api.ts ``` AI: traceert, fixt. ### Pattern 4 — Refactor ``` Refactor @app/api/users/route.ts naar gebruik van Supabase in plaats van mock-data. Gebruik @lib/supabase.ts voor de client. ``` Composer doet multi-file edit. --- ## 11. Wanneer Cursor vs Console Cursor is geweldig maar niet altijd het antwoord. ### Cursor wel - Code schrijven, refactoren, debuggen - Nieuwe features - Boilerplate - Documentatie ### Cursor niet - Git workflow (gebruik gewoon `git`) - File-management buiten project (Finder/Explorer) - Terminal-heavy taken (gewone shell) - Browser debuggen (DevTools) - Een quick lookup (ChatGPT/browser) ### Hybride Veel pro devs: **Cursor voor IDE-werk, Claude.ai voor brainstormen, Terminal voor git**. Gebruik niet één tool voor alles. --- ## Bronnen - **Cursor docs:** https://docs.cursor.com - **Cursor Tab features:** https://docs.cursor.com/tab - **Cursor Composer:** https://docs.cursor.com/composer - **.cursorrules examples:** https://github.com/PatrickJS/awesome-cursorrules - **Cursor changelog:** https://www.cursor.com/changelog - **Cursor forum (community):** https://forum.cursor.com