跳转至

Cursor深度使用指南

🚀 掌握Cursor编辑器的高级技巧,让AI成为你的编程搭档

📖 本章概述

Cursor是一款基于VS Code的AI编辑器,深度集成了Claude和GPT-4等大语言模型。本章将详细介绍Cursor的核心功能和使用技巧。

学习目标

  • 掌握Composer、Chat、Agent三种模式的使用场景
  • 熟练使用@codebase、@docs、@web等引用功能
  • 配置自定义规则提升AI理解能力
  • 建立高效的Cursor工作流

🛠️ 工具介绍

Cursor是什么

Text Only
┌─────────────────────────────────────────────────────────────┐
│                      Cursor 架构                            │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│    ┌─────────────────────────────────────────────────┐     │
│    │              VS Code 基础                        │     │
│    │    (扩展生态、快捷键、界面布局)                   │     │
│    └─────────────────────────────────────────────────┘     │
│                         │                                   │
│                         ▼                                   │
│    ┌─────────────────────────────────────────────────┐     │
│    │              AI 能力层                           │     │
│    │    (Claude/GPT-4/自定义模型)                     │     │
│    └─────────────────────────────────────────────────┘     │
│                         │                                   │
│                         ▼                                   │
│    ┌─────────────────────────────────────────────────┐     │
│    │              交互模式                            │     │
│    │    (Tab补全/Chat/Composer/Agent)                 │     │
│    └─────────────────────────────────────────────────┘     │
│                                                             │
└─────────────────────────────────────────────────────────────┘

核心功能一览

功能 描述 快捷键
Tab补全 智能代码补全 Tab
Chat 对话式编程 Cmd/Ctrl + L
Composer 多文件编辑 Cmd/Ctrl + I
Agent 自主任务执行 Cmd/Ctrl + .
@引用 上下文引用 @
Cmd K 行内编辑 Cmd/Ctrl + K

🎯 基础用法

安装与配置

  1. 下载安装
  2. 访问 cursor.sh 下载
  3. 支持Windows、macOS、Linux

  4. 首次配置

    JSON
    // 推荐的初始设置
    {
      "cursor.aiProvider": "claude",  // 或 "gpt-4"
      "cursor.tabAutocomplete": true,
      "cursor.enableCodebaseIndexing": true
    }
    

  5. 导入VS Code设置

  6. Cursor可以导入你现有的VS Code配置
  7. 支持大部分VS Code扩展

Tab补全

最基础但最常用的功能:

Python
# 示例:输入函数名后,Tab补全函数体
def calculate_fibonacci(n):

# 按Tab后,AI自动补全:
def calculate_fibonacci(n):
    if n <= 1:
        return n
    return calculate_fibonacci(n-1) + calculate_fibonacci(n-2)

使用技巧: - 写好函数签名和注释,AI补全质量更高 - 用// TODO:描述意图,AI会帮你实现 - 补全后检查逻辑,不要盲目接受

Chat模式

对话式编程,适合复杂问题:

Text Only
┌─────────────────────────────────────────────────────────────┐
│  Chat 面板                                                   │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  用户: 帮我写一个Python函数,实现快速排序算法                 │
│                                                             │
│  AI: 好的,这是一个快速排序的实现:                          │
│                                                             │
│  ```python                                                  │
│  def quicksort(arr):                                        │
│      if len(arr) <= 1:                                      │
│          return arr                                         │
│      pivot = arr[len(arr) // 2]                             │
│      left = [x for x in arr if x < pivot]                   │
│      middle = [x for x in arr if x == pivot]                │
│      right = [x for x in arr if x > pivot]                  │
│      return quicksort(left) + middle + quicksort(right)     │
│  ```                                                        │
│                                                             │
│  用户: 能优化一下空间复杂度吗?                              │
│                                                             │
│  AI: 可以使用原地排序版本...                                 │
│                                                             │
└─────────────────────────────────────────────────────────────┘

快捷键: - Cmd/Ctrl + L:打开Chat面板 - Cmd/Ctrl + Enter:发送消息 - Esc:关闭面板

🚀 高级技巧

Composer模式详解

Composer是Cursor的核心功能,支持多文件编辑:

Text Only
┌─────────────────────────────────────────────────────────────┐
│                   Composer 工作流程                          │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│   输入需求 ──> AI分析代码库 ──> 生成修改方案 ──> 预览确认    │
│      │              │              │              │         │
│      │              │              │              │         │
│      ▼              ▼              ▼              ▼         │
│   描述任务      理解上下文      多文件修改     接受/拒绝      │
│                                                             │
└─────────────────────────────────────────────────────────────┘

使用场景:

  1. 功能开发

    Text Only
    用户输入:
    "添加用户登录功能,包括:
    - 登录表单组件
    - API接口
    - JWT验证中间件
    - 用户状态管理"
    
    AI会:
    - 创建多个文件
    - 修改现有代码
    - 保持代码一致性
    

  2. 代码重构

    Text Only
    用户输入:
    "将项目中的回调函数改为async/await"
    
    AI会:
    - 扫描所有回调
    - 批量转换
    - 保持功能一致
    

  3. Bug修复

    Text Only
    用户输入:
    "修复用户列表分页不显示的问题"
    
    AI会:
    - 分析相关代码
    - 定位问题
    - 提供修复方案
    

Composer最佳实践:

Markdown
✅ 好的Composer提示词:
- 明确描述需求:"创建一个用户注册功能,包含邮箱验证"
- 提供上下文:"参考现有的登录功能实现"
- 指定约束:"使用TypeScript,遵循项目代码规范"

❌ 不好的Composer提示词:
- 过于模糊:"帮我写点代码"
- 缺乏上下文:"添加功能"
- 目标不清:"优化一下"

Agent模式工作流

Agent模式让AI能够自主执行复杂任务:

Text Only
┌─────────────────────────────────────────────────────────────┐
│                    Agent 工作模式                            │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│   ┌─────────┐     ┌─────────┐     ┌─────────┐              │
│   │ 理解任务 │ --> │ 制定计划 │ --> │ 执行步骤 │              │
│   └─────────┘     └─────────┘     └─────────┘              │
│        │                               │                    │
│        │                               ▼                    │
│        │                        ┌─────────┐                │
│        │                        │ 验证结果 │                │
│        │                        └─────────┘                │
│        │                               │                    │
│        └───────────────────────────────┘                    │
│                   (循环直到完成)                             │
│                                                             │
└─────────────────────────────────────────────────────────────┘

Agent模式示例:

Text Only
用户:帮我搭建一个Express.js REST API项目

Agent执行过程:
1. 创建项目结构
   - package.json
   - src/
     - index.js
     - routes/
     - controllers/
     - middleware/

2. 安装依赖
   - express
   - dotenv
   - cors

3. 配置基础代码
   - 服务器入口
   - 路由设置
   - 错误处理

4. 添加示例API
   - GET /api/health
   - CRUD示例

5. 生成文档
   - README.md
   - API文档

@引用功能

@引用让你精确控制AI的上下文:

引用类型 用途 示例
@codebase 搜索整个代码库 "@codebase 找到所有API调用"
@docs 引用文档 "@docs React Hooks用法"
@web 搜索网络 "@web 最新Node.js版本特性"
@file 引用特定文件 "@file src/utils.ts 解释这个函数"
@folder 引用文件夹 "@folder src/components 审查这些组件"
@git Git相关 "@git 最近的提交"
@problems 当前问题 "@problems 帮我修复这些错误"

使用示例:

Text Only
┌─────────────────────────────────────────────────────────────┐
│  @codebase 搜索整个项目                                      │
├─────────────────────────────────────────────────────────────┤
│  用户: @codebase 项目中如何处理用户认证?                     │
│                                                             │
│  AI: 根据代码库分析,项目使用以下方式处理认证:               │
│  1. JWT Token存储在localStorage                             │
│  2. axios拦截器自动添加Authorization头                       │
│  3. 路由守卫检查登录状态                                     │
│  相关文件:                                                  │
│  - src/utils/auth.ts                                        │
│  - src/api/interceptors.ts                                  │
│  - src/router/guards.ts                                     │
└─────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────┐
│  @web 搜索网络资源                                           │
├─────────────────────────────────────────────────────────────┤
│  用户: @web Next.js 14的新特性有哪些?                        │
│                                                             │
│  AI: 根据网络搜索,Next.js 14的主要新特性包括:               │
│  1. Turbopack稳定版                                         │
│  2. Server Actions稳定版                                    │
│  3. Partial Prerendering (预览)                             │
│  4. Metadata API改进                                        │
│  ...                                                        │
└─────────────────────────────────────────────────────────────┘

自定义规则配置

通过.cursorrules文件定制AI行为:

Markdown
# .cursorrules 示例

## 项目信息
- 项目类型:React + TypeScript
- 状态管理:Zustand
- 样式方案:Tailwind CSS

## 代码规范
- 使用函数组件和Hooks
- 优先使用命名导出
- 组件文件使用PascalCase命名
- 工具函数使用camelCase命名

## 禁止事项
- 不要使用any类型
- 不要使用var声明
- 不要内联样式

## 偏好设置
- 优先使用可选链操作符 ?.
- 使用const优于let
- 优先使用箭头函数

## 注释规范
- 公共函数必须有JSDoc注释
- 复杂逻辑需要行内注释
- 使用中文注释

规则优先级:

Text Only
1. 项目根目录 .cursorrules
2. 用户全局规则 (~/.cursorrules)
3. Cursor默认规则

💡 最佳实践

工作流建议

Text Only
┌─────────────────────────────────────────────────────────────┐
│                   推荐的Cursor工作流                         │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  1. 开始新功能                                               │
│     └─> 使用Composer描述需求                                 │
│     └─> 预览修改,确认后应用                                 │
│                                                             │
│  2. 编码过程                                                 │
│     └─> Tab补全加速编码                                      │
│     └─> Cmd K 进行行内修改                                   │
│     └─> Chat 询问复杂问题                                    │
│                                                             │
│  3. 调试问题                                                 │
│     └─> @problems 查看错误                                   │
│     └─> @codebase 搜索相关代码                               │
│     └─> Agent 模式自动修复                                   │
│                                                             │
│  4. 代码审查                                                 │
│     └─> @git 查看变更                                        │
│     └─> Chat 请求审查建议                                    │
│     └─> Composer 批量优化                                    │
│                                                             │
└─────────────────────────────────────────────────────────────┘

提示词模板

功能开发模板:

Markdown
请帮我实现 [功能名称]:

需求描述:
- [具体需求1]
- [具体需求2]

技术要求:
- 使用 [技术栈]
- 遵循 [代码规范]

参考:
- @file [相关文件路径]
- 类似 [参考实现]

Bug修复模板:

Markdown
请帮我修复以下问题:

问题描述:
[具体描述问题现象]

错误信息:
[粘贴错误信息]
Text Only
相关代码:
@file [文件路径]

期望行为:
[描述期望的正确行为]

代码审查模板:

Markdown
请审查以下代码:

@file [文件路径] 或 @folder [文件夹路径]

审查重点:
- [ ] 代码质量
- [ ] 性能问题
- [ ] 安全隐患
- [ ] 最佳实践

请给出改进建议。

快捷键速查

操作 Mac Windows/Linux
打开Chat Cmd + L Ctrl + L
打开Composer Cmd + I Ctrl + I
行内编辑 Cmd + K Ctrl + K
Agent模式 Cmd + . Ctrl + .
接受补全 Tab Tab
拒绝补全 Esc Esc
新建Chat Cmd + Shift + L Ctrl + Shift + L
清除Chat Cmd + K (在Chat中) Ctrl + K (在Chat中)

❓ 常见问题

Q1: Tab补全不准确怎么办?

解决方案: 1. 提供更清晰的上下文(函数签名、注释) 2. 使用.cursorrules指定代码规范 3. 在Chat中明确描述需求后再编码

Q2: Composer修改太多文件怎么办?

解决方案: 1. 使用Preview模式仔细检查 2. 分步骤执行,一次只做一件事 3. 使用Git确保可以回滚

Q3: AI不理解我的项目结构?

解决方案: 1. 确保@codebase索引完成 2. 在.cursorrules中描述项目结构 3. 使用@folder@file明确指定上下文

Q4: 如何保护敏感代码?

解决方案: 1. 在设置中启用隐私模式 2. 使用.cursorignore排除敏感文件 3. 敏感项目考虑使用本地模型

Q5: 生成代码质量不高?

解决方案: 1. 提供更详细的需求描述 2. 在.cursorrules中定义代码规范 3. 使用示例代码作为参考 4. 多轮迭代优化

🎯 实战案例

案例1:快速搭建REST API

需求: 创建一个用户管理API

操作步骤:

  1. 打开Composer (Cmd + I)
  2. 输入需求:

    Text Only
    创建一个Express.js用户管理API:
    - GET /users - 获取用户列表
    - GET /users/:id - 获取单个用户
    - POST /users - 创建用户
    - PUT /users/:id - 更新用户
    - DELETE /users/:id - 删除用户
    
    使用TypeScript,包含错误处理和数据验证
    

  3. 预览生成的文件

  4. 接受修改

生成结果:

Text Only
project/
├── src/
│   ├── index.ts          # 入口文件
│   ├── routes/
│   │   └── users.ts      # 用户路由
│   ├── controllers/
│   │   └── userController.ts  # 控制器
│   ├── middleware/
│   │   └── errorHandler.ts    # 错误处理
│   ├── types/
│   │   └── user.ts       # 类型定义
│   └── validators/
│       └── userValidator.ts   # 数据验证
├── package.json
└── tsconfig.json

案例2:重构遗留代码

需求: 将回调风格的代码改为Promise

原始代码:

JavaScript
// 旧代码
function getUserData(userId, callback) {
  database.connect(function(err, conn) {
    if (err) return callback(err);
    conn.query('SELECT * FROM users WHERE id = ?', [userId], function(err, results) {
      if (err) return callback(err);
      callback(null, results[0]);
    });
  });
}

操作步骤:

  1. 选中代码
  2. Cmd + K打开行内编辑
  3. 输入:"将这个函数改为async/await风格"

生成代码:

JavaScript
// 重构后
async function getUserData(userId) {
  const conn = await database.connect();
  const results = await conn.query('SELECT * FROM users WHERE id = ?', [userId]);
  return results[0];
}

案例3:添加单元测试

需求: 为工具函数添加测试

操作步骤:

  1. 打开Chat (Cmd + L)
  2. 输入:
    Text Only
    @file src/utils/calculator.ts
    
    请为这个文件中的所有函数编写Jest单元测试:
    - 覆盖正常情况
    - 覆盖边界情况
    - 覆盖错误情况
    

生成测试:

TypeScript
// src/utils/__tests__/calculator.test.ts
import { add, subtract, multiply, divide } from '../calculator';

describe('Calculator', () => {
  describe('add', () => {
    it('should add two positive numbers', () => {
      expect(add(1, 2)).toBe(3);
    });

    it('should handle negative numbers', () => {
      expect(add(-1, -2)).toBe(-3);
    });

    it('should handle zero', () => {
      expect(add(0, 5)).toBe(5);
    });
  });

  describe('divide', () => {
    it('should divide two numbers', () => {
      expect(divide(10, 2)).toBe(5);
    });

    it('should throw error when dividing by zero', () => {
      expect(() => divide(10, 0)).toThrow('Division by zero');
    });
  });
});

📝 学习检查点

完成本章学习后,请确认你已掌握:

基础能力

  • 能够使用Tab补全加速编码
  • 能够使用Chat进行对话编程
  • 了解Composer和Agent的区别

中级能力

  • 能够使用@引用精确控制上下文
  • 能够配置和使用.cursorrules
  • 掌握常用快捷键

高级能力

  • 能够使用Composer完成复杂功能开发
  • 能够使用Agent自动化任务
  • 建立了个人化的Cursor工作流

🔗 相关资源


下一章: 02-GitHub-Copilot精通 - 学习Copilot全家桶的使用技巧