【AI 编程】Cursor 实用教程:从核心功能到上下文控制

【AI 编程】Cursor 实用教程:从核心功能到上下文控制

摘要:本文介绍了  Cursor 的安装配置、核心 AI 功能使用,以及规则配置与 @上下文引用等。

1 Cursor 介绍

Cursor 是一款 AI 优先的代码编辑器,核心通过三大能力协同提升开发效率:

AI 模型:并非简单接入 AI,而是将其作为编辑器的核心交互方式,且可自由切换不同 AI 模型;

强上下文感知:能自动识别项目文件等上下文,让 AI 给出的修改建议更精准、贴合开发场景;

对话式开发:仅需自然语言下达指令,Cursor 即可完成对应的开发任务,大幅降低操作门槛。

2 安装并配置 Cursor

2.1 安装与登录

访问 cursor.com 并单击 "下载" 按钮,即可安装成功。

点击 "注册" 或 "登录" 后,系统会提示您设置一个帐户。可以选择使用邮件。
 

2.2 Cursor 配置说明

在 Cursor 中,Cursor Settings 和 Editor Settings 是两个不同的配置入口,分别用于管理 AI 功能 和 编辑器基础设置。

对比项Cursor SettingsEditor Settings
功能定位管理 AI 相关功能和 Cursor 特有设置调整编辑器基础行为和外观
继承性与 VS Code 差异较大(Cursor 独有功能)大部分继承自 VS Code(如主题设置)
影响范围影响 AI 代码生成、分析、对话的效果影响代码编辑体验(如排版、颜色)
典型配置示例调整 AI 模型参数、代码库索引路径修改字体、启用自动保存、更改主题
2.3.1 Cursor AI 相关设置

Ctrl + Shift + J开启光标设置,即可进行AI编程相关的定制配置:

以下是对 Cursor Settings 中各项配置的作用解释:

  • General:包含账户相关设置,可进行登录、注册操作,实现配置在不同设备间的同步 ;能进行 VS Code 配置导入,快速迁移主题、快捷键等设置;还隐私配置管理。
  • Features:可开关 AI 代码补全、对话模式(Edit、Agent)等核心功能;还能对这些功能的相关参数进行微调,比如调整代码补全的触发灵敏度、对话模式的快捷操作设置等 。
  • Models:允许用户选择不同的 AI 模型,添加模型和配置模型访问API Key等。
  • Rules:例如可以制定代码检查规则,像对代码格式、语法规范等进行约束;也能设置特定代码操作的规则,比如当进行代码重构、修改时遵循的逻辑和标准等 。
  • MCP:配置多MCP操作的相关行为,比如选择代码时的联动规则、批量编辑代码的方式等,帮助开发者更高效地对多处代码进行统一操作 。
  • Indexing:定义需要被索引的代码库路径,让 Cursor 的 AI 能理解代码上下文;设置排除规则,排除不需要索引的文件或文件夹,提高索引效率和 AI 分析的准确性。
  • Beta:可启用或禁用测试功能,提供反馈等。用户能通过这里尝试 Cursor 的新功能,并帮助开发团队测试和改进这些尚未正式发布的特性 。

2.3.2 Cursor 汉化配置

1. 打开扩展:启动 Cursor 后,按下Ctrl + Shift + X ,左侧边栏会出现扩展商店界面。

2. 搜索并安装插件:在搜索框输入 "Chinese" ,点击相关插件并进行安装。

3. 打开命令面板:按下Ctrl + Shift + P,输入 "Configure Display Language" 进入语言配置界面。

4. 选择中文并重启:在弹出的语言列表中选择 "中文(简体)",保存设置后重启 Cursor。

3 Cursor三大核心AI功能

3.1 Tab键:补全模式

Cursor 的 Tab 键具有强大的代码自动补全功能,基于 AI 模型,能根据代码上下文自动预测并生成代码补全建议和代码修复重构,还可用于导航代码。

Tab 键接受建议,也可以通过按 Esc 键拒绝建议。要逐字部分接受建议,请按 Ctrl/⌘ + →
3.1.1 行代码补全

已有代码片段:

<span><span>//需求:写一个工具类计算数组平均值</span> <span>public</span> <span>class</span> <span>ArrayUtils</span> {   <span>// 按tab会完成补全</span> }</span>

按tab键 → Cursor 自动生成代码:

<span><span>//需求:写一个工具类计算数组平均值</span> <span>public</span> <span>class</span> <span>ArrayUtils</span> {    <span>public</span> <span>static</span> <span>void</span> <span>main</span>(<span>String</span>[] <span>args</span>) {        <span>int</span>[] <span>nums</span> <span>=</span> {<span>1</span>,<span>2</span>,<span>3</span>,<span>4</span>,<span>5</span>,<span>6</span>,<span>7</span>,<span>8</span>,<span>9</span>,<span>10</span>};        <span>System</span>.<span>out</span>.<span>println</span>(<span>average</span>(<span>nums</span>));   }    <span>public</span> <span>static</span> <span>double</span> <span>average</span>(<span>int</span>[] <span>nums</span>) {        <span>int</span> <span>sum</span> <span>=</span> <span>0</span>;        <span>for</span> (<span>int</span> <span>num</span> : <span>nums</span>) {            <span>sum</span> <span>+=</span> <span>num</span>;       }        <span>return</span> (<span>double</span>) <span>sum</span> <span>/</span> <span>nums</span>.<span>length</span>;   } }</span>
3.1.2 智能代码重写

已有代码片段:

<span><span>import</span> <span>java</span>.<span>util</span>.<span>List</span>; <span>import</span> <span>java</span>.<span>util</span>.<span>Arrays</span>; <span>import</span> <span>java</span>.<span>util</span>.<span>ArrayList</span>; ​ <span>public</span> <span>class</span> <span>ArrayUtils</span> { ​    <span>public</span> <span>void</span> <span>arrayFor</span>() {            <span>List</span><span><</span><span>Integer</span><span>></span> <span>numbers</span> <span>=</span> <span>Arrays</span>.<span>asList</span>(<span>1</span>, <span>2</span>, <span>3</span>, <span>4</span>, <span>5</span>);        <span>List</span><span><</span><span>Integer</span><span>></span> <span>evenNumbers</span> <span>=</span> <span>new</span> <span>ArrayList</span><span><></span>();        <span>for</span> (<span>int</span> <span>num</span> : <span>numbers</span>) {            <span>if</span> (<span>num</span> <span>%</span> <span>2</span> <span>==</span> <span>0</span>) {                <span>evenNumbers</span>.<span>add</span>(<span>num</span>);           }       }   } }</span>

按Tab键 → 自动补全:

<span><span>//在循环上方添加注释:// 使用 Stream 重构</span> <span>//光标放在循环代码块的任意位置,按 Tab 键</span> <span>public</span> <span>void</span> <span>arrayFor</span>() {        <span>List</span><span><</span><span>Integer</span><span>></span> <span>numbers</span> <span>=</span> <span>Arrays</span>.<span>asList</span>(<span>1</span>, <span>2</span>, <span>3</span>, <span>4</span>, <span>5</span>);    <span>List</span><span><</span><span>Integer</span><span>></span> <span>evenNumbers</span> <span>=</span> <span>numbers</span>.<span>stream</span>().<span>filter</span>(<span>num</span> <span>-></span> <span>num</span> <span>%</span> <span>2</span> <span>==</span> <span>0</span>).<span>collect</span>(<span>Collectors</span>.<span>toList</span>()); } ​</span>
3.1.3 多行协同优化

Cursor 的多行协同优化核心能力:多行代码,一次性完成语法升级、结构重组、安全修复。

多行数据联想,修改

<span><span>int</span> <span>count</span>; <span>// 普通变量</span> <span>String</span> <span>name</span>; <span>// 姓名</span> <span>boolean</span> <span>isValid</span>; <span>// 是否有效</span> <span>double</span> <span>price</span>; <span>// 价格</span> <span>//tab 会继续联想变量类型</span></span>
<span><span>public</span> <span>static</span> <span>int</span> <span>add</span>(<span>int</span> <span>a</span>, <span>int</span> <span>b</span>) {    <span>//代码添加注释</span>    <span>//</span>    <span>System</span>.<span>out</span>.<span>println</span>(<span>"第一次输出"</span>);    <span>//</span>    <span>System</span>.<span>out</span>.<span>println</span>(<span>"第二次输出"</span>);    <span>//</span>    <span>System</span>.<span>out</span>.<span>println</span>(<span>"第三次输出"</span>);    <span>//</span>    <span>System</span>.<span>out</span>.<span>println</span>(<span>"第四次输出"</span>);    <span>return</span> <span>0</span>; }</span>

3.2 Chat:对话模式

Chat 是 Cursor 的 AI 助手,位于的侧边栏中,可让您通过自然语言与代码库进行交互。您可以提出问题、请求代码编辑、获取终端命令建议等,所有这些都无需切换上下文。

代码库管理与修改:可深度理解代码库结构及组件关联,能按需求直接修改代码;

代码重构:基于对代码库整体逻辑的掌握,辅助完成代码库的重构优化,保障重构合理性;

项目初始化:可根据需求从零搭建项目,涵盖创建项目结构、安装依赖、编写初始代码等全流程;

故障排查与修复:能基于项目错误信息定位问题,并直接调整错误代码完成修复。

3.2.1 快速开始

使用 Ctrl+L  访问侧边栏中的聊天,用自然语言输入我们的请求,AI 将做出相应的响应。

对话时,建议采用清晰具体的语言格式,最好包含任务类型、上下文描述和具体要求。

1. 代码生成类

[任务类型]:请生成一个 {功能描述} 的 {编程语言/框架} 实现 ​ [具体要求]: 1. 使用 {特定技术/库} 2. 包含 {特定功能点} 3. 符合 {编码规范/设计模式}
请生成一个学习计划页面,使用 HTML+CSS+JavaScript 实现 ​ [具体要求]: 1. 使用Tailwind CSS v3和Font Awesome 2. 包含任务添加、编辑、删除功能 3. 包含日历视图展示学习计划 4. 包含学习进度可视化图表 5. 符合现代UI设计原则和响应式设计 6. 具有平滑的动画和交互效果

2. 代码修改类

[任务类型]:请帮我修改 {上下文:具体文件/代码片段},实现 {预期功能} ​ [当前问题]:{现有的错误/不足描述} ​ [具体要求]: 1. 保持 {现有功能/结构} 不变 2. 使用 {特定方法/技术} 改进 3. 修复 {具体错误/警告}
请帮我修改当前的 React 组件,优化列表渲染性能。 当前问题:滚动时列表卡顿,存在明显性能问题。 要求: 1. 保持现有 UI 不变 2. 使用 React.memo 和虚拟列表技术优化 3. 添加性能监控日志

3. 代码解释类

[任务类型]:请解释 {代码片段/功能模块} 的 {具体方面} ​ [上下文信息]:{相关业务背景/技术栈} ​ [具体问题]: 1. {不理解的语法/逻辑} 2. {特定设计选择的原因} 3. {潜在的问题/优化点}
请解释这段 TypeScript 代码的泛型约束和类型推导逻辑。 上下文:这是一个用于数据验证的工具函数。 具体问题: 1. <T extends object> 这里为什么要加 extends object? 2. 类型推导是如何工作的? 3. 是否存在类型安全隐患?

4. 流程自动化类

[任务类型]:请创建一个自动化流程,实现 {目标描述} ​ [操作步骤]: 1. 从 {数据源} 获取 {数据类型} 2. 执行 {数据处理/转换操作} 3. 将结果保存到 {目标位置} 4. 触发 {后续操作/通知} ​ [具体要求]: 1. 使用 {特定工具/API} 2. 添加 {错误处理/重试机制} 3. 生成 {日志/报告}
请创建一个自动化流程,每天凌晨从 GitHub API 获取仓库星标数,保存到 Google Sheets 并生成趋势图。 要求: 1. 使用 GitHub REST API v3 2. 添加异常处理和邮件通知 3. 生成周/月增长趋势图表

5. 命令行辅助类

[任务类型]:请提供 {操作场景} 的 {操作系统} 命令 ​ [具体需求]: 1. {执行的具体操作} 2. 包含 {特定参数/选项} 3. 处理 {特殊情况/错误}
请提供在 macOS 上批量压缩图片的命令行方案。 需求: 1. 将当前目录下所有 PNG/JPG 图片压缩 50% 2. 保留原始文件并添加 "-compressed" 后缀 3. 显示每个文件的压缩前后大小对比

3.2.2 Chat 三种模式

Cursor Chat 提供三种针对不同任务优化的模式:

Agent 代理模式:可学习并理解项目代码结构,能直接修改项目代码;

Ask 对话模式:基于项目代码结构解答问题、解释代码,不修改代码;

Manual 手动模式:需手动指定修改范围等上下文,不识别项目结构,仅按指令编辑。

3.2.2.1 Agent 模式体验

Agent 是 Cursor 中的默认且最自主的模式,旨在以最少的指导处理复杂的编码任务。它启用了所有 "工具",可自主探索您的代码库、阅读文档、编辑文件和运行终端命令以高效完成任务。

Agent的能力总结:

  • 全面了解项目结构和依赖关系
  • 独立探索您的代码库,识别相关文件,并进行必要的更改
  • 使用所有可用工具搜索、编辑、创建文件和运行终端命令
  • 将复杂任务分解为可管理的步骤并按顺序执行

Agent的配置选项:

  • Model:为代理模式预先选择大模型
  • Edit Keybindings: 为agent模式设置快速开启快捷键(默认 ctrl + i)
  • Auto-run :当你让 Agent 修改代码后,自动执行相关命令,验证修改的正确性。
  • Auto-fix errors:当自动运行过程中出现错误,Agent 会尝试分析错误信息并自动修复。

3.2.2.2 Ask模式体验

Ask 是 Chat 的 "只读" 模式,用于提出问题、探索和了解代码库。

Ask的配置选项:

  • Model (模型) : 预先选择应作为 Ask (Ask ) 的默认模型
  • Keybinding : 设置键绑定以切换到 Ask 模式
  • 搜索代码库 : 允许 Cursor 搜索它自己的上下文,而非手动 @ 文件 作为上下文

3.2.2.3 Manual 模式体验

与 Ask 模式不同,它不探索代码库或运行终端命令;它完全取决于您的具体说明和您提供的上下文(例如,通过 @文件名),AI 生成修改建议后,还要用户手动点击 "应用" 才会改动代码,且通常是单文件 / 局部代码调整。

4 Cursor 精准指定上下文

在 Cursor 工具里,"上下文(Context)" 可理解为 让 AI 准确理解需求、辅助编码的 "信息参考范围" ,是 AI 读懂代码、精准响应的关键。

4.1 Rules 规则

Rules是给Cursor AI功能生成结果添加规则和限制,让 AI 生成的代码贴合团队规范,减少人工二次修改成本,主要的作用如下:

  • 可约束代码风格(如强制用驼峰命名、要求函数必须写注释 )
  • 能限定技术选型(如禁止使用某老旧库、优先用项目指定工具类 )
  • 提前指定核心参数(如提前设置连接数据库的地址和账号密码等)

Rule主要的配置方案有两种:

维度项目规则(Project Rules)用户规则(User Rules)
作用范围仅对当前项目生效,团队成员共享相同规则对所有项目生效,个人专属配置
存储位置项目根目录下的 .cursor/rules/随意.mdc 文件用户配置目录(如 ~/.cursor/rules
同步方式随项目代码提交到版本库(如 Git),团队共享仅本地生效,不随项目同步
适用场景统一团队编码规范(如函数注释格式、依赖版本)个人习惯(如快捷键、AI 响应风格)

注意: 项目规则和用户规则同时存在并且规则冲突,项目规则优先级更高

4.2 项目规则配置

1. 项目下创建规则文件

创建文件夹自定义文件:项目/.cursor/rules/随意命名.mdc

快捷命令方式创建:Ctrl + Shift + P >  "New Cursor Rule"

2. 编写项目规则文件

--- description: "团队前端项目规范" priority: 1000 --- ​ # 代码风格 1. 函数必须包含 JSDoc 注释 2. 禁止使用 `var`,统一用 `const`/`let` 3. 函数命名必须添加 zwf_前缀, 例如:zwf_login ​ # 依赖管理 - 优先使用项目内已有的工具函数(如 `utils/request`) - 禁止引入低版本的 lodash(<4.0.0)

4.3 用户规则配置

用户规则在cursor settings > rules 中定义,用户规则不支持 MDC,它们只是纯文本。

4.4 MDC语法

Cursor 的 MDC(Markdown with Cursor)语法是专门为编写项目规则设计的轻量级格式,它结合了 Markdown 的可读性和元数据配置能力。

MDC 文件组成部分

1. 前置元数据:用 --- 包裹的 YAML 格式配置,定义规则的基本属性(如作用范围、优先级)

2. 规则内容:用 Markdown 语法写具体规则

 前置元数据

--- # 官方约定字段 description: "前端项目规则" globs: "src/**/*.tsx" priority: 1000 ​ # 自定义字段 author: "技术团队" review_date: "2025-06-04" special_rule: "仅周一至周五生效" ---

常用元数据字段

字段作用示例
description描述规则用途,指导 AI 如何应用规则"前端组件编码规范"
globs指定规则生效的文件范围(支持 glob 语法)"src/**/*.{js,ts,jsx}"
priority规则优先级(数值越大越优先),解决规则冲突1000
version规则版本号(可选)"1.0.0"

规则内容(Markdown 正文)

用 Markdown 的标题、列表、代码块等语法写具体规则,常见结构:

# 一、代码风格 1. 函数必须包含 JSDoc 注释     - 至少包含 `@param` 和 `@return` 描述   2. 变量命名必须使用驼峰命名法(camelCase)   3. 每行代码长度不超过 120 个字符   ​ # 二、技术选型 - 禁止直接使用原生 fetch,必须通过项目封装的 request 工具   - 优先使用 React Hooks 而非 Class 组件

安全约束规则

# 安全规范 1. 禁止使用 eval() 函数   2. SQL 查询必须使用参数化查询,防止注入攻击   3. 敏感信息(如 API 密钥)必须从环境变量读取

特殊语法:引用项目文件

@file 引用项目内的配置文件,让 AI 参考:

<span><span># 工具链配置 1. ESLint 规则必须符合 @file .eslintrc.js   2. 测试用例必须遵循 Jest 框架规范  </span></span>
4.5 @ 符号

在 Cursor 的聊天交互中,@ 符号是精准指定上下文范围的核心指令,本质是给 AI 划定分析 / 操作的边界,让 AI 只聚焦你指定的代码 / 文件 / 文件夹,大幅提升回复的精准度和效率。

@Files-:需分析 / 修改完整单个文件,且无需跨文件上下文时使用

@Folders-:指定「文件夹路径」,让 Cursor 覆盖该目录下所有相关文件

@Code-:仅需聚焦某函数、类、变量、代码块时使用,避免无关代码干扰


感谢你的阅读!✿

Read more

FT8440AD非隔离12V350mA智能家居芯片方案(直接替代SDH8302)

FT8440AD非隔离12V350mA智能家居芯片方案(直接替代SDH8302)

在智能家居设备日益普及的今天,一个高效、可靠且成本效益高的电源管理方案成为了设计成功的关键。FT8440AD,一款12V/350mA的非隔离智能家居芯片,以其卓越的性能和直接替代SDH8302的能力,成为了市场上的一颗新星。三佛科技将深入探讨FT8440AD的电路设计、BOM清单以及其在实际应用中的表现,展示如何利用这一芯片打造一个既经济又高效的智能家居供电方案。 FT8440AD芯片特点 * 内置 500 V MOSFET,Rdson 典型 8 Ω,无需外置高压 MOS; * 高压启动电路,50 ms 急速 VCC 建立,省掉 22 kΩ/2 W 启动电阻; * 频率 35 kHz±6 % 抖频,EMI 峰值自动打散,轻松过 CISPR22 Class B; * 逐周期 OCP、OVP、OTP、SCP

*ARINC 825,一种航电通信总线标准

*ARINC 825,一种航电通信总线标准

1. 它是什么 ARINC 825 是一个航空电子领域的技术标准,主要规范了在航空器内部如何使用一种名为“控制器局域网”(CAN)的数据总线进行通信。可以把它理解为航空界为CAN总线制定的一套精细的“交通规则”和“车辆制造标准”。 在生活中,CAN总线类似于小区或办公楼里的内部电话网络,各个房间(设备)可以通过这个网络互相通话。而ARINC 825 则详细规定了在这个高端、高安全要求的“航空大厦”里,这个内部电话应该用什么线路、怎么拨号、说什么语言、通话的优先级如何安排,以确保沟通绝对可靠、有序。 2. 它能做什么 它的核心作用是实现航空器上不同电子设备之间稳定、高效、可预测的数据交换。这些设备包括飞行控制系统、发动机指示系统、舱内压力控制系统等。 例如,想象一架飞机的机翼上有多个传感器,监测结冰情况。这些传感器需要将“探测到冰”这个消息快速、可靠地告知除冰系统和飞行员显示面板。ARINC 825 确保了这条关键消息能在复杂的电子环境中,像消防通道一样,拥有最高优先级,

探索多无人机、移动机器人全覆盖与协同路径规划

探索多无人机、移动机器人全覆盖与协同路径规划

多无人机 移动机器人 扫地机器人 全覆盖路径规划 多无人机 移动机器人协同路径规划 multi uav robot coverage path planning,cpp,mcpp algorithm基于 A 星算法的路径规划方法,地图可自定义设置,障碍物也可自定义设置,算法适合二次开发使用 在智能机器人领域,路径规划一直是关键技术,尤其是多无人机、移动机器人以及扫地机器人这类常见设备的全覆盖路径规划,更是备受关注。今天咱们就来唠唠基于 A 星算法的相关路径规划方法,以及围绕它展开的一些有意思的内容。 A 星算法的基础 A 星算法是一种在图形平面上,有多个节点的路径,求出最低通过成本的算法。它综合考虑了从起点到当前点的实际代价 g(n),以及从当前点到终点的预估代价 h(n),通过公式 f(n) = g(n) + h(n) 来评估每个节点的优先级,优先拓展

基于FPGA的北斗导航自适应抗干扰算法的设计与实现(任务书+开题报告+文献综述+代码+仿真+实物+毕业论文)

基于FPGA的北斗导航自适应抗干扰算法的设计与实现(任务书+开题报告+文献综述+代码+仿真+实物+毕业论文)

摘   要 如今,随着卫星导航技术的飞速发展,位置信息服务已经融入到我们的日常生活中,导航目前被称为继移动互联网后第三大产业。卫星导航在维护国家的安全中也发挥着不可替代的作用。为了使导航系统不受干扰的影响,本文以北斗导航系统为平台,研究基于阵列天线的自适应抗干扰算法。 首先,文章就自适应抗干扰算法的原理和方法进行了系统介绍,并在MATLAB中建立阵列模型,对基于功率倒置算法的空域抗干扰算法和空时联合抗干扰算法进行性能仿真。然后根据系统的指标,确定了在FPGA中实现抗干扰算法的方案,包括数字下变频、权值计算、数据加权、数字上变频等模块。根据权值计算模块实现方式的不同,本文提供了两种抗干扰算法在FPGA中实现的方案:一种是基于FPGA嵌入式软核NIOS II的抗干扰实现,将权值计算的过程放在NIOS II软核中,用C语言进行实现;另一种是基于逻辑语言的抗干扰算法的实现,即用硬件描述语言Verilog HDL进行权值的计算。权值计算涉及到浮点数运算和Hermite矩阵求逆,本文给出了各模块的设计方法和仿真结果,并与MATLAB仿真结果进行对比。最后给出了两种实现方案的实测结果,表明两种实