Cursor:真正的 AI 原生编辑器,用完就回不去了
💚 AI编程实战 · 第二课
Cursor:真正的 AI 原生编辑器,用完就回不去了
发布时间:2026-06-24 | 阅读约 12 分钟 | 从CRUD到架构师
🎯 本课学习目标• 理解 Cursor 和 GitHub Copilot 的核心区别
• 掌握 Cursor 安装配置和三大核心功能:Tab补全、Ctrl+K内联编辑、Ctrl+L对话
• 用 Cursor Agent 模式从零生成完整 Spring Boot 功能模块
• 学会配置 .cursorrules 让 AI 理解你的项目规范
上周我们学了 GitHub Copilot——一位坐在旁边帮你补全代码的 AI 助手。
今天要介绍的 Cursor,不只是助手,更像是一个能理解整个项目、主动帮你写代码的 AI 队友。很多用过 Cursor 的程序员说:用了 Cursor 再用普通编辑器,感觉缺了点什么。
一、Cursor vs Copilot:到底哪里不一样?
GitHub Copilot
嵌入已有编辑器(VSCode/IDEA)
专注行内补全和短函数
上下文:当前文件为主
$10/月
⚡ Cursor
独立编辑器(基于 VSCode)
能理解整个代码库结构
上下文:整个项目 + 文档
免费版可用,Pro $20/月
一句话总结:Copilot 是代码补全神器,Cursor 是 AI 结对编程搭档。两者不冲突,各有擅长场景。
二、安装与初始配置
2.1 下载安装
-
访问 cursor.com 下载对应系统版本(Windows/Mac/Linux 均支持) -
安装时会提示”是否导入 VSCode 配置”——建议选是,插件和快捷键直接迁移 -
注册账号(可用 GitHub 账号登录),免费版每月有足够的 AI 请求额度
2.2 选择 AI 模型
点击右下角模型名称可切换,三种常用模型:
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
💡 推荐策略:日常补全用 cursor-small(不扣额度),生成整个功能模块时切到 claude-sonnet-4。
三、三大核心功能实战
3.1 Tab 补全:比 Copilot 更懂上下文
Cursor 的 Tab 补全会结合整个项目上下文。在 Service 层写了方法,到 Controller 层时它自动知道参数类型和返回值——不需要你解释:
// 你只打出 @GetMapping,按 Tab 后 Cursor 自动补全整个方法// 它已经读了你的 UserService,知道返回类型是 Optional<UserDTO>@GetMapping("/users/{id}")public ResponseEntity<UserDTO> getUserById(@PathVariable Long id) {return userService.findById(id).map(ResponseEntity::ok).orElse(ResponseEntity.notFound().build());}
3.2 Ctrl+K:内联编辑
选中一段代码,按 Ctrl+K,用自然语言告诉 Cursor 你要怎么改:
📌 实战演示
选中一个普通 for 循环 → 按 Ctrl+K → 输入:改成 Stream API,加上 null 值过滤,返回 List<String>
// 改之前(普通 for 循环):List<String> names = new ArrayList<>();for (User user : users) {names.add(user.getName());}// Ctrl+K 一键改成 Stream(自动加了 null 过滤):List<String> names = users.stream().filter(u -> u.getName() != null).map(User::getName).collect(Collectors.toList());
3.3 Ctrl+L:对话上下文(最强功能)
按 Ctrl+L 打开侧边聊天框,输入 @ 可以引用:
@UserService.java
——把某个文件纳入上下文 @Codebase
——让 Cursor 扫描整个项目再回答 @Docs
——导入官方文档(Spring Boot、MyBatis 都有)
@UserService.java @UserRepository.java帮我添加一个方法 findActiveUsersWithOrders:- 查询所有状态为 ACTIVE 的用户- 预加载他们的订单列表,用 @EntityGraph 避免 N+1- 支持分页(Pageable)- 返回 Page<UserWithOrdersDTO>
Cursor 会给出完整实现:Service 方法、Repository 查询、DTO 定义,一次搞定。
四、Agent 模式:让 Cursor 主动干活
按 Ctrl+Shift+I 打开 Agent 面板。你描述目标,Cursor 自动规划步骤、创建文件、写代码,甚至能运行终端命令。
📌 实战:从零生成用户登录模块
我需要在现有 Spring Boot 项目中添加 JWT 登录功能:1. POST /api/auth/login,接收 username + password2. BCrypt 校验密码3. 登录成功返回 JWT token(24小时有效)4. 统一返回格式:{ code, message, data: {token, userId} }5. 密码错 5 次锁定账号 15 分钟项目已有:User实体类、UserRepository、全局异常处理
Cursor Agent 会依次:① 创建 JwtUtil.java → ② 创建 AuthController.java → ③ 创建 LoginRequest/LoginResponse DTO → ④ 修改 UserService 加锁定逻辑 → ⑤ 添加 spring-security 和 jjwt 依赖到 pom.xml
🔥 真实体感:原本需要 1-2 小时写完的功能,Cursor Agent 大约 3-5 分钟生成初稿。你的主要工作变成:审查代码逻辑 + 补充业务细节,而不是从零写样板代码。
五、.cursorrules:让 AI 遵守你的项目规范
在项目根目录创建 .cursorrules 文件,Cursor 的所有 AI 功能都会遵守这里的规范:
# .cursorrules 示例(Java Spring Boot 项目)你是一个 Java Spring Boot 专家。生成代码时请遵守以下规范:## 技术栈- Java 17 + Spring Boot 3.x + MyBatis Plus- 数据库:MySQL 8.0,表名下划线,字段驼峰映射- 统一返回格式:Result<T>,code/message/data 三个字段## 代码规范- 所有 Service 方法必须写 Javadoc 注释- 异常统一通过 BusinessException 抛出,禁止用 RuntimeException- 分页查询统一用 PageResult<T> 返回- 敏感字段(密码、手机号)不能出现在日志里## 禁止事项- 禁止在 Controller 层写业务逻辑- 禁止用 @Autowired(统一用构造器注入)- 禁止返回 null,用 Optional 或空集合代替
💡 经验:.cursorrules 写得越详细,AI 生成的代码越贴近你的风格,Review 时改动越少。把它当作”给 AI 的项目说明书”来写。
六、Cursor 快捷键速查
|
|
|
|
|---|---|---|
Tab |
|
|
Esc |
|
|
Ctrl+K |
|
|
Ctrl+L |
|
|
Ctrl+Shift+I |
|
|
Ctrl+Shift+P |
|
|
七、Cursor 的局限性
用了这么多优点,也要说几个坑:
- 生成代码要 Review
:AI 不了解你的业务逻辑,生成的代码要认真看,尤其是权限校验、事务处理这类关键逻辑 - 免费额度有限
:Agent 模式很消耗 token,频繁使用建议购买 Pro - 大项目速度变慢
:@Codebase 扫描超大项目时有延迟 - 网络要求
:需要稳定的网络连接,国内有时不稳定
课后实操
-
下载安装 Cursor,将你现有的一个项目导入,感受 Tab 补全的智能程度 -
为你的项目写一份 .cursorrules,包含技术栈说明和 3 条代码规范 -
用 Agent 模式生成一个你最近要做的功能,对比手写所需时间
下次课:《Claude + MCP:让 AI 直接操作你的数据库和代码库》——AI 工具链的下一个层级。
📖 获取本课资料:后台回复「Cursor」,获取 .cursorrules 模板大全(Java/Python/前端三个版本)+ Cursor 常用 Prompt 50 条。
💬 加入 AI 编程交流群,一起玩转 AI 工具!
Cursor 用不好?想分享自己的 Prompt 技巧?
欢迎加入「从CRUD到架构师」AI编程交流群
大家一起探索 AI 辅助编程的最佳实践
👉 点击下方菜单「联系我」→ 扫码添加 → 备注「进群」
💚 AI编程实战 · 每周二更新
关注「从CRUD到架构师」,用 AI 工具让编程效率翻倍
下一课:Claude + MCP 操控数据库
夜雨聆风