0%

从容地使用 Cursor 帮助开发

关于 开发工具 系列其他文章的传送门

  1. 《 从容地使用 Cursor 帮助开发 》     您当前所在位置


cursor

一、前言

2024 年底,AI 辅助编程开始从"玩具"走向"生产力工具"。Cursor 不是第一个 AI 编辑器,但它是第一个把 AI 融入编辑器每个操作细节的产品——当你还在复制代码去 ChatGPT 粘贴时,别人已经在编辑器里按一个快捷键完成了整个重构。

它基于 VS Code 生态,意味着你现有的快捷键、插件、主题、settings 全部可以迁移。本文不讲空话,直接从安装开始,带你走完一个完整的 Cursor 工作流。

二、安装与配置

2.1 下载安装

cursor.com 下载对应系统版本,macOS / Windows / Linux 都支持。安装后首次启动会引导你导入 VS Code 的配置:

1
2
3
# 是否从 VS Code 导入?
# 选择 "Yes",插件、快捷键、settings.json 全部继承
# 相当于 VS Code 换了个 AI 引擎

2.2 配置模型

Cmd+Shift+P 打开命令面板,搜索 Cursor SettingsModels 页面:

模型 用途 推荐
Claude Sonnet 复杂代码生成、重构、架构设计 主力模型
GPT-4o 日常问答、通用编码 备选
Claude Haiku 快速补全、简单解释 轻量任务

建议:日常把 Sonnet 设为主模型,Haiku 处理简单补全,能兼顾质量和速度。

2.3 Rules 配置

Cursor 项目根目录下创建一个 .cursorrules 文件,写入你对 AI 的行为偏好,这是提高输出质量最关键的一步

1
2
3
4
5
- 优先使用函数式编程,避免 class
- 代码注释只解释 Why,不解释 What/How
- 返回完整代码片段,不要用省略号
- 所有错误处理必须明确,不吞异常
- 中文变量名禁止出现

设置一次,所有对话和 Agent 行为都会遵循这条基线。

三、核心功能

3.1 Chat 对话模式

快捷键 Cmd+L 打开侧边聊天面板。这是最接近 ChatGPT 的模式,但有两个关键区别:

  1. 上下文感知:Chat 默认携带你当前打开的文件的全部内容,不需要复制粘贴
  2. 应用代码:生成代码后可以直接 Apply 按钮插入到当前文件的对应位置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# @Chat 示例:在聊天框中问
# "为这个函数写一个 pytest 测试用例,覆盖正常和异常分支"

def divide(a: int, b: int) -> float:
if b == 0:
raise ValueError("除数不能为 0")
return a / b

# Cursor 会生成:
def test_divide():
assert divide(10, 2) == 5.0
assert divide(-10, 2) == -5.0
import pytest
with pytest.raises(ValueError):
divide(10, 0)

选中代码片段后按 Apply,Cursor 会自动定位到编辑器中的正确位置插入。

3.2 Ctrl+K 内联编辑

这是 Cursor 最常用的功能。选中一段代码,按 Cmd+K,弹出一个输入框:

1
把这段代码从 for 循环改成列表推导式

Cursor 会在原地重写选中代码,你可以用 diff 对比修改前后,决定接受还是拒绝。不需要离开编辑器,不需要复制粘贴。

1
2
3
4
5
6
7
8
9
# 选中这段
result = []
for i in range(100):
if i % 2 == 0:
result.append(i * 2)

# 按 Cmd+K,输入 "改成列表推导式"
# 输出:
result = [i * 2 for i in range(100) if i % 2 == 0]

3.3 Composer / Agent 模式

快捷键 Cmd+I 打开 Composer。这是 Cursor 的多文件编辑模式——一个对话可以同时修改多个文件,自动创建新文件,甚至执行终端命令。

适用场景

  • 新建一个完整的 API 端点(路由 + 控制器 + 模型 + 测试)
  • 重构一个跨文件的模块拆分
  • “给这个前端页面加一个暗黑模式切换”

Composer 模式下 Cursor 会在对话中列出所有改动的文件,像代码审查一样让你逐文件确认。

四、实战场景

4.1 从需求到代码:快速搭建一个工具函数

假设需要写一个 JSON 配置文件校验器,要求递归检查所有字段是否包含必需键。

在 Cursor 中新建文件,按 Cmd+I 打开 Composer,输入:

1
2
3
4
写一个 Python 函数,接收两个参数:
1. data: dict — 待校验的数据
2. schema: dict — 定义每个字段的类型和是否必需
递归校验所有嵌套层级,返回 (is_valid, errors) 元组

Cursor 生成的代码直接写入文件,整个过程不需要切出编辑器。

4.2 代码审查与重构

接手一个旧项目,看到一个 200 行的函数,选中它按 Cmd+K

1
2
3
4
5
这个函数职责混杂,按以下原则拆分成多个单一职责的小函数:
1. 数据提取放到 extract()
2. 业务计算放到 compute()
3. 格式化输出放到 format()
保持原有对外接口不变

Cursor 会生成重构后的版本,Accept 后直接覆盖即可。配合 Git diff 检查变更范围,风险极低。

4.3 Debug 协助

遇到一个诡异 bug,把错误栈和上下文代码一起选中,Chat 中输入:

1
2
这个错误栈表明 json.loads 收到了 bytes 而不是 str,
但我确认传入的是 str。检查什么情况下 socket.recv 会返回 bytes?

Cursor 会从错误栈倒推,指出可能的原因——比漫无目的 print 大法高效得多。

一个实战技巧:当 Cursor 给出的原因不够准,把当前作用域的所有变量状态贴给它(用 print 或日志输出),它能更准确定位。

五、使用建议

5.1 不要让它猜

AI 不是你肚子里的蛔虫。描述需求越具体,输出质量越高

不好的提问 好的提问
“写个排序” “用快速排序对包含 10 万条记录的列表排序,原地排序,空间复杂度 O(log n)”
“这段代码有问题” “这段代码在并发写入时会出现竞态条件,用 threading.Lock 修复”
“优化一下” “这个查询在 100 万行数据上要跑 3 秒,给 user_id 加复合索引”

5.2 用 .cursorrules 约束行为

把项目的技术栈、编码规范、偏好模式写入 .cursorrules。比如 RESTful API 项目:

1
2
3
4
- 所有 API 返回格式统一为 { code, message, data }
- 使用 Pydantic 做请求校验
- 数据库操作走 SQLAlchemy async session
- 不允许 N+1 查询

每次对话 Cursor 都会加载这些规则,稳定输出符合要求的代码。

5.3 信任但验证

Cursor 生成代码后一定要审查

  • diff 检查改了什么
  • 跑一次测试确保功能无误
  • 对安全敏感的逻辑(SQL、shell 命令、权限校验)额外留意

AI 辅助编程的核心原则:你是指挥官,Cursor 是执行者。决策、审查、最终责任在你,不在 AI。

六、总结

功能 快捷键 适用场景
Chat Cmd+L 问答、代码解释、大段生成
Inline Edit Cmd+K 选中代码原地重构、优化、修复
Composer Cmd+I 多文件协作、新功能搭建、跨模块重构
Agent Cmd+Shift+I 自动化任务、终端命令、业务流程编排

Cursor 的核心价值不是"帮你写代码",而是消除上下文切换的摩擦。你不用在浏览器和编辑器之间来回跳跃,所有的思考、生成、修改、验证都在一个地方完成。

开始你的第一行 Cursor 代码——打开一个项目,选中一段旧代码,按 Cmd+K,输入你的优化想法。用多了就会发现:不是代码变简单了,是你处理代码的方式变从容了。