Cursor 是什么
Cursor 是一个基于 VS Code 构建的代码编辑器,在编辑体验中深度集成了 AI 辅助。与 GitHub Copilot(作为插件添加到现有编辑器中)不同,Cursor 控制了整个编辑器,因此能做到更深层的集成:多文件编辑、全局代码库上下文、内联 diff 预览。
它于 2023 年发布,到 2025 年已成为增长最快的开发工具之一。是否值得从现有工具切换,取决于你实际的工作方式。
定价
| 方案 | 价格 | 包含内容 |
|---|---|---|
| Hobby | 免费 | 2000 次代码补全,50 次慢速高级请求/月 |
| Pro | $20/月 | 无限补全,500 次快速高级请求,慢速无限 |
| Business | $40/人/月 | 管理后台、强制隐私模式、SSO |
"高级请求"是使用大模型(Claude Sonnet、GPT-5.2)的请求。快速请求有优先队列,慢速请求可能需要 10-30 秒。
作为参考,GitHub Copilot Individual 是 $10/月。Cursor Pro 贵一倍,但包含 Copilot 没有的功能(多文件编辑、代码库索引、Agent 模式)。
三个核心功能
1. Tab 补全
使用频率最高的功能。你打字时,Cursor 预测下一步编辑——不只是下一个 token,而是下一个逻辑修改。它可以:
- 补全多行代码块
- 预测你做出一个修改后的下一步(比如你在第 10 行重命名了变量,它会建议在第 25 行做同样的重命名)
- 填充跨行的重复模式
在典型的 TypeScript/Python/Go 代码库中,大约 70-80% 的建议是有用的。在多行预测方面明显优于 Copilot 的自动补全。
它失效的场景:带有领域特定模式的复杂业务逻辑。偶尔也会建议错误的 import。
2. Cmd+K(内联编辑)
选中代码,按 Cmd+K,用自然语言描述你想做的修改。Cursor 会在应用修改前展示 diff 预览。
效果好的场景:
"为 API 返回 429 状态码的情况添加错误处理"
"把这个 class 组件转成带 hooks 的函数组件"
"为这个文件中所有导出函数添加 JSDoc 注释"
效果差的场景:
- "让这段代码更快"——太模糊,会导致随意修改
- 跨多个互相依赖文件的复杂重构
- 修改它没有上下文的代码(比如项目中的内部 API)
Diff 预览是 Cursor 在这里的关键优势。在 Copilot Chat 中,你在聊天窗口看到代码,然后手动粘贴。在 Cursor 中,你能看到精确的变更,逐块接受或拒绝。
3. Chat(Cmd+L)+ 代码库上下文
这是 Cursor 架构优势最明显的地方。Chat 面板可以:
- 索引整个代码库 — Cursor 为项目文件创建向量嵌入,所以当你问"auth 中间件怎么工作的"时,它会自动找到相关文件
- 用 @文件名 引用特定文件 — "@schema.prisma User 表有哪些索引?"
- 多文件编辑 — 要求在多个文件中进行修改,它会为每个文件生成 diff
- 用 @docs 引用文档 — 指向外部文档 URL 获取上下文
实际使用示例:
@utils/auth.ts @middleware.ts
重构 auth 检查:把 JWT 验证提取到一个共享工具函数中,
让 middleware 和 auth utils 都调用它。删除重复的逻辑。
Cursor 会读取两个文件,对每个文件提出修改建议,并展示可逐文件接受的 diff。
Cursor vs GitHub Copilot
| 功能 | Cursor | GitHub Copilot |
|---|---|---|
| 自动补全 | 预测下一步编辑,而非下一个 token | 逐 token 补全 |
| 内联编辑 | Cmd+K + diff 预览 | Copilot Edits(较新,不太成熟) |
| 代码库索引 | 内置,自动 | VS Code 中有限,GitHub.com 上更好 |
| 多文件编辑 | Chat 中支持 | Copilot Workspace(独立产品) |
| 模型选择 | Claude、GPT-5.2、自定义 | GPT-5.2、Claude(模型选择有限) |
| 编辑器 | VS Code 分支 | VS Code/JetBrains/Neovim 插件 |
| 价格 | $20/月 | $10/月 |
| 隐私模式 | 支持(Business 方案) | 支持(Business/Enterprise) |
选 Cursor:你经常做重构,频繁跨文件操作,希望 AI 理解整个项目上下文。
选 Copilot:你对当前编辑器设置满意,主要需要自动补全和内联建议,想省 $10/月。
实用技巧
1. 使用 .cursorrules 文件
在项目根目录创建 .cursorrules 文件,写入项目特定的指令:
这是一个 Next.js 15 项目,使用 App Router 和 TypeScript。
默认使用 Server Components,只在需要时使用 "use client"。
使用 Tailwind CSS 做样式,不使用 CSS modules。
所有 API 路由必须用 zod 做输入校验。
这些上下文会注入到每个 AI 请求中,显著提高输出的针对性。
2. Chat 中的提示词要具体
差:" 修一下这个 bug"
好:"UserProfile.tsx 中的 useEffect 在每次渲染时都运行,而不是只在 userId 变化时运行。修复依赖数组,并解释当前实现为什么有问题。"
3. 仔细审查 diff
Cursor 的建议质量不错但并非万无一失。常见错误:
- 删除了有特定原因存在的空值检查
- 添加不必要的
async/await - 从错误的包版本导入
- TypeScript 中的类型收窄细微问题
4. 用 Tab 补全加速重复模式
当你在测试文件、配置项或 API handler 中写类似的代码时,手动写第一个,让 Tab 预测其余部分。这是 Cursor 省时间最多的场景。
5. 索引外部文档
对于 API 变化快的框架(Next.js、SvelteKit、tRPC),用 @docs 指向它们的最新文档。否则 Cursor 可能生成过时 API 版本的代码。
局限性
- 资源占用大 — Cursor 比 VS Code + Copilot 消耗更多内存和 CPU。16GB 以下内存的机器可能会卡。
- 扩展兼容性 — 大部分 VS Code 扩展可用,但一些深度集成编辑器的扩展可能出问题。切换前检查你的必备扩展。
- 模型配额 — Pro 方案每月 500 次快速请求看着不少,但一次多文件编辑可能消耗 5-10 次请求。重度用户可能月中就用完。
- 学习曲线 — 要获得好结果需要学会有效地提问。工具功能强大,但并非"装上即用"。