Introduction
Cursor est un éditeur de code propulsé par l'IA, fork de VS Code, qui intègre nativement des modèles comme Claude 3.5 Sonnet ou GPT-4o pour générer, refactoriser et déboguer du code en temps réel. En 2026, avec ses mises à jour comme l'IA contextuelle multi-fichiers et les agents autonomes, il réduit le temps de développement de 40-60% selon des benchmarks GitHub Copilot vs Cursor. Idéal pour les débutants, il combine une interface familière à VS Code avec des superpouvoirs IA : Composer pour éditer via prompts, Chat pour questions précises, et Cmd+K pour refactorings instantanés. Ce tutoriel vous emmène des bases à des exemples concrets, en créant un projet React fullstack. Vous économiserez des heures sur boilerplate et debug, comme si un mentor senior codait à vos côtés. Prêt à transformer votre workflow ? (128 mots)
Prérequis
- Ordinateur avec macOS, Windows ou Linux (8 Go RAM minimum, 16 recommandés pour IA fluide)
- Compte Cursor gratuit (cursor.com, limite 500 requêtes/mois ; Pro à 20$/mois illimité)
- Connaissances basiques en HTML/JS (pas de TS requis, Cursor génère tout)
- Git installé pour versioning
Télécharger et installer Cursor
# macOS (via site officiel ou Homebrew)
brew install --cask cursor
# Ou téléchargez depuis https://cursor.com
# Windows/Linux : exécutez l'installateur .exe/.deb
# Vérification
cursor --version
# Lancer Cursor
cursor .Ce script installe Cursor via Homebrew sur macOS pour simplicité ; adaptez pour votre OS. Le flag --version confirme l'installation (v0.45+ en 2026). Évitez les stores tiers pour la dernière version avec IA optimisée.
Premier lancement et interface
Lancez Cursor : l'interface est identique à VS Code avec barre latérale fichiers, éditeur central, terminal bas. Nouveauté 2026 : onglet 'AI' à droite pour Composer/Chat. Créez un dossier projet via Cmd+Shift+P > 'New Folder'. Connectez votre compte Cursor (email/Google) pour activer l'IA. Testez Cmd+L (Chat) : tapez 'Explique-moi React hooks' pour une réponse contextualisée. L'analogie ? Comme VS Code avec un copilote IA toujours éveillé, anticipant vos besoins via contexte fichier ouvert.
Configuration initiale settings.json
{
"cursor.model": "claude-3-5-sonnet-20240620",
"cursor.rules": [
"Préfixe toujours les réponses en français",
"Utilise TypeScript strict",
"Ajoute des commentaires JSDoc"
],
"editor.fontSize": 15,
"editor.tabSize": 2,
"workbench.colorTheme": "Cursor Light",
"telemetry.telemetryLevel": "off",
"cursor.chat.enabled": true,
"cursor.composer.enabled": true
}Copiez ce JSON dans Cmd+Shift+P > 'Preferences: Open Settings (JSON)'. 'cursor.model' priorise Claude pour précision ; 'rules' personnalisent l'IA (règles globales). 'telemetry off' protège privacy. Redémarrez Cursor pour appliquer – gain immédiat en cohérence code.
Utiliser Composer pour générer du code
Composer (Cmd+I) est magique : sélectionnez du code ou rien, décrivez 'Crée un composant React TodoList avec useState'. L'IA propose diffs appliquables d'un clic. Analogie : un chef cuisinier qui improvise votre recette exacte. Pour multi-fichiers, ouvrez dossier et Cmd+K sur sélection.
Générer un Hello World TypeScript
// hello.ts - Généré via Cursor Cmd+I: "Crée un script TS Hello World avec types"
interface Greeting {
name: string;
age: number;
}
function greet(person: Greeting): string {
/**
* Salutation personnalisée avec validation âge (>0).
* @param person - Objet avec nom et âge.
* @returns Message de bienvenue.
*/
if (person.age <= 0) {
throw new Error('Âge invalide');
}
return `Bonjour ${person.name}, vous avez ${person.age} ans !`;
}
const user: Greeting = { name: 'Alice', age: 30 };
console.log(greet(user));
// ts-node hello.ts pour exécuterPrompt Cursor : 'Crée un script TS Hello World avec types et JSDoc'. Ce code complet inclut interface, validation et doc. Exécutez via npx ts-node hello.ts. Piège : sans rules JSON, pas de français/docs – toujours configurer d'abord.
Projet React : Composant TodoList
import React, { useState, FormEvent } from 'react';
type Todo = {
id: number;
text: string;
completed: boolean;
};
const TodoList: React.FC = () => {
const [todos, setTodos] = useState<Todo[]>([]);
const [input, setInput] = useState('');
const addTodo = (e: FormEvent) => {
e.preventDefault();
if (!input.trim()) return;
setTodos([...todos, { id: Date.now(), text: input, completed: false }]);
setInput('');
};
const toggleTodo = (id: number) => {
setTodos(todos.map(todo =>
todo.id === id ? { ...todo, completed: !todo.completed } : todo
));
};
return (
<div>
<form onSubmit={addTodo}>
<input
value={input}
onChange={(e) => setInput(e.target.value)}
placeholder="Nouvelle tâche"
/>
<button type="submit">Ajouter</button>
</form>
<ul>
{todos.map(todo => (
<li key={todo.id} onClick={() => toggleTodo(todo.id)} style={{ textDecoration: todo.completed ? 'line-through' : 'none' }}>
{todo.text}
</li>
))}
</ul>
</div>
);
};
export default TodoList;
// Utilisation : dans App.tsx <TodoList />Prompt Composer : 'Génère TodoList React TSX complet avec useState, types et style inline'. Code 100% fonctionnel, copier-collable dans npx create-react-app. Piège : oubliez npm i -D @types/react si TS errors – Cursor suggère via Chat.
Init projet React + Vite avec Cursor
# Dans terminal Cursor (Ctrl+`)
npx create-vite@latest mon-app --template react-ts
cd mon-app
npm install
# Ajoute Tailwind pour style (prompt Cursor: "Installe Tailwind")
npm install -D tailwindcss postcss autoprefixer
npx tailwindcss init -p
# Lance dev server
npm run dev
# Ouvre http://localhost:5173Cursor intègre terminal natif ; ce script init Vite React TS (plus rapide que CRA en 2026). Prompt IA pour Tailwind config auto. Évite piège 'port occupé' en vérifiant lsof -i :5173.
API backend simple Node/Express
import express from 'express';
import cors from 'cors';
const app = express();
app.use(cors());
app.use(express.json());
type Todo = { id: number; text: string; completed: boolean };
const todos: Todo[] = [];
app.get('/todos', (req, res) => {
res.json(todos);
});
app.post('/todos', (req, res) => {
const newTodo: Todo = { id: Date.now(), ...req.body, completed: false };
todos.push(newTodo);
res.json(newTodo);
});
app.delete('/todos/:id', (req, res) => {
const id = parseInt(req.params.id);
const index = todos.findIndex(t => t.id === id);
if (index > -1) todos.splice(index, 1);
res.json({ success: true });
});
const PORT = 3001;
app.listen(PORT, () => console.log(`Serveur sur http://localhost:${PORT}`));
// npm init -y && npm i express cors @types/express @types/cors ts-nodePrompt : 'Crée API Express TS CRUD todos avec CORS'. Intégrez à React via fetch(). Piège : sans @types/*, TS râle – npm i -D @types/node + tsconfig.json.
Bonnes pratiques
- Règles Cursor personnalisées : Ajoutez 3-5 rules JSON pour cohérence (ex: 'Toujours async/await', 'Préviens vulnérabilités OWASP').
- Prompts précis : 'Refactore ce code en hooks custom, optimisé mobile' > résultats 3x meilleurs.
- Vérifiez diffs : Acceptez/rejetez via Ctrl+Enter ; ne validez pas aveuglément.
- Projet .cursor/rules : Créez fichier rules local pour repo-specific (gitignorez secrets).
- Hotkeys daily : Cmd+K (edit), Cmd+L (chat), Cmd+I (composer) – muscle memory en 1h.
Erreurs courantes à éviter
- Limites gratuites épuisées : Passez Pro ou attendez reset mensuel ; testez offline mode.
- Prompts vagues : 'Fais une API' → code générique ; spécifiez 'Express TS, JWT auth, Prisma DB'.
- Contexte perdu : Ouvrez TOUS fichiers liés avant Composer pour IA multi-fichiers.
- Pas de .gitignore : Cursor génère secrets (API keys) – ajoutez
!.envet validez manuellement.
Pour aller plus loin
- Docs officielles : Cursor Docs
- Avancé : Intégrez agents autonomes (2026 feature) pour tests auto.
- Communauté : Reddit r/cursor_ai, Discord Cursor.
- Formations pro : Découvrez nos formations Learni sur IA & DevOps pour maîtriser Cursor en prod.