Cursor核心功能及开发实战

Cursor三大核心AI功能

代码自动补全(Tab键)

基于 AI 模型,能根据代码上下文自动预测并生成代码补全建议,不仅支持单行代码补全,还能进行多行代码补全,甚至可以自动导入缺失的依赖。同时,它还具备智能代码重写功能,能够对多行代码一次性完成语法升级、结构重组、安全修复等操作,帮助开发者更高效地编写和优化代码。 Tab功能的开启:

  • Cursor Settings:

  • 页面下方

  • 注意如果Tab确认开启(VPN有关) 但不工作 可尝试调整Cursor Settings-Network

  1. 单行/多行代码补全

    • 已有代码片段:
    java 复制代码
    //需求:写一个工具类计算数组平均值
    public class ArrayUtils {
       // 按tab会完成补全
    }
    • 按Tab键--Cursor自动生成的代码
    java 复制代码
    //需求:写一个工具类计算数组的平均值
    public class ArrayUtils {       
        public static double average(int[] arr) {
            int sum = 0;
            for (int i = 0; i < arr.length; i++) {
                sum += arr[i];
            }
            return (double) sum / arr.length;
        }
    }
  2. 智能代码重写

    • 已有代码片段
    java 复制代码
    //使用Stream重构
    public void arrayFor() {    
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
        List<Integer> evenNumbers = new ArrayList<>();
        for (int num : numbers) {
            if (num % 2 == 0) {
                evenNumbers.add(num);
            }
        }
    }
    • 在循环上方添加注释:// 使用 Stream 重构,光标放在循环代码块的任意位置,按Tab键自动补全
    java 复制代码
    public void arrayFor() {    
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
        List<Integer> evenNumbers = numbers.stream().filter(num -> num % 2 == 0).collect(Collectors.toList());
    }
  3. 多行协同优化 Cursor 的 多行协同优化 核心能力:多行代码,一次性完成 语法升级、结构重组、安全修复

    • 多行数据联想
    • 多行批量修改
  4. 光标位置预测

    • 示例
    • Tab自动预测位置+补充注释
  5. 接受、接受部分和拒绝

    • 准备测试类
    java 复制代码
        public class Student {
         private String name;
        private int  age;
        //tab 
        //tab 接收完整补全
        //ctrl + -> 部分和逐步接收补全 [需要开启部分补全配置]
        //esc 或者 继续输入 拒绝补全
      }
  6. Tab相关配置说明 配置修改位置: cursor settings > tab

  • A powerful Copilot replacement that can suggest changes across multiple lines...

    • 作用:启用 / 禁用 Cursor Tab 功能。
    • 通俗理解:相当于 "总开关",勾选后才能用 Tab 键触发 AI 代码建议(如多行补全、智能续写);取消勾选则 Tab 仅作普通缩进。
  • Accept the next word of a suggestion via Ctrl+RightArrow

    • 作用 :开启后,可用 Ctrl+→(Windows/Linux)或 ⌘+→(Mac)逐个单词接受 AI 建议
    • 通俗理解:AI 给的建议很长时,不想全要?开这个功能,按快捷键 "挑着用"。
  • 场景 :比如 AI 建议 const fullName = firstName + " " + lastName;,但你只想用 firstName + " " + lastName 部分,就可通过该快捷键拆分接受。

  • Enable Cursor Tab suggestions in comments

    • 作用 :让 AI 在注释内容里也提供 Tab 建议
    • 通俗理解 :写注释时,AI 帮你补全思路!比如输入 // 实现冒泡排序的步骤:,按 Tab 自动续写步骤说明。
  • Show whitespace only Cursor Tab suggestions

    • 作用 :控制是否显示仅包含空白(空格、换行)的 AI 建议

    • 通俗理解 :这个配置项决定了 当按 Tab 时,是否让那些 "只调整空格、换行、缩进(没有实际代码逻辑变化)" 的建议显示出来。。

    • 案例

      csharp 复制代码
      public class Demo {
          public void test() {
              System.out.println("Hello");
               if (true) {
                  System.out.println("World");
                }
             }
      }
      • 勾选:把光标放在混乱的代码里(比如 public void test() { 这行后面) tab 会有修改建议
      • 不勾选:把光标放在混乱的代码里(比如 public void test() { 这行后面) tab不会有修改建议
  • Tab to import necessary modules with Cursor Tab. Only supports TypeScript

    • 作用 :在 TypeScript 中,写代码时缺模块,按 Tab 自动帮你导入依赖
  • Enable auto import for Python. This is a beta feature.

    • 作用:(测试版)为 Python 开启类似功能,按 Tab 自动导入缺失模块。

Chat对话模式

这是 Cursor 的 AI 助手功能,位于侧边栏。用户可以通过自然语言与代码库进行交互,比如提出问题、请求代码编辑、获取终端命令建议等,无需切换上下文。它还能了解代码库的结构和逻辑,代表用户对代码库进行更改,帮助重构代码库,甚至可以根据需求从零开始搭建项目,包括创建项目结构、安装依赖项和编写初始代码等。此外,Chat 提供了不同的模式,如 Agent 代理模式和 Ask 对话模式,Agent 模式可以自主探索代码库并进行修改等操作,Ask 模式则主要用于获取代码相关的解释和答案,不会直接修改代码。

Cursor Chat 核心功能解析

  1. 代码库智能操作与功能实现 - 深度理解项目架构与代码逻辑,支持直接对代码库进行增删改操作,高效实现新功能需求。无论是添加支付模块、集成第三方API,还是扩展业务逻辑,均可通过自然语言指令触发自动化代码生成与修改,大幅提升开发效率。
  2. 全链路代码重构与架构优化 - 基于对代码库组件依赖关系的分析,提供系统化重构方案。可实现单体架构向微服务拆分、技术栈升级(如Python 2→3)、反模式修复(如冗余代码提取)等复杂操作,同时自动维护跨文件引用关系,确保重构过程的稳定性。
  3. 项目自动化搭建与初始化 - 支持从零构建完整项目框架:根据技术栈需求(如React+Node.js、Spring Boot+Vue)自动生成标准化项目结构,配置依赖管理文件(package.json/maven pom.xml),甚至编写基础服务代码(如用户认证模块、数据库连接层),帮助开发者快速进入业务编码阶段。
  4. 智能错误定位与代码修复 - 基于错误日志(如编译报错、运行时异常)自动定位问题根源,提供针对性修复方案。可直接修改代码中的语法错误(如TypeScript类型不匹配)、逻辑漏洞(如空指针异常)或依赖冲突,同步生成修改前后的diff对比,确保修复过程透明可控。

快速开始

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

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

  • 以下是几个参考模板:

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

    浏览器直接打开plan.html

    • 代码修改类
    css 复制代码
    [任务类型]:请优化 {上下文:具体文件路径/代码片段},实现 {预期目标}  
    
    [当前问题]:{错误描述/性能瓶颈/逻辑漏洞}  
    
    [具体要求]:  
    1. 保持 {UI 交互/核心业务逻辑} 不变  
    2. 使用 {技术方案} 改进(如 React 并发模式、Webpack 代码分割)  
    3. 修复 {具体问题}(如内存泄漏、TS 类型错误)  
    markdown 复制代码
    示例:请修改当前 React 项目的图片加载组件,优化首屏渲染性能。  
    当前问题:图片未懒加载导致首屏加载时间超过 3s,Lighthouse 性能评分仅 42 分。  
    要求:  
    1. 保持图片展示与交互逻辑不变  
    2. 使用 next/image 实现自动懒加载与响应式处理  
    3. 添加骨架屏占位与错误重试机制  
    4. 生成性能优化前后的 Lighthouse 对比报告 
    • 代码解释类
    css 复制代码
    [任务类型]:请解析 {代码模块/设计模式} 的 {技术要点}  
    
    [上下文信息]:{项目背景/技术栈/业务场景}  
    
    [具体问题]:  
    1. {语法糖/底层原理} 如何工作?  
    2. {设计选择} 的优缺点与适用场景  
    3. {潜在风险} 及优化方案 
    csharp 复制代码
    示例:请解释 Vue 3 组合式 API 中 ref 与 reactive 的区别与应用场景。  
    上下文:正在开发一个中大型后台管理系统,需选择状态管理方案。  
    具体问题:  
    1. ref 为什么需要 .value 解包?与 reactive 的响应式原理差异?  
    2. 何时应该使用 ref 而非 reactive?请举例说明  
    3. 组合式 API 中如何避免 ref 解包导致的代码冗余
    • 流程自动化类
    markdown 复制代码
    [任务类型]:请构建自动化工作流,实现 {业务目标}  
    
    [执行流程]:  
    1. 从 {数据源} 获取 {数据类型}(如 GitHub API 获取 PR 数据)  
    2. 执行 {处理逻辑}(如数据清洗、格式转换)  
    3. 将结果 {输出方式}(如保存至数据库、生成报表)  
    4. 触发 {后续动作}(如通知推送、定时任务)  
    
    [技术要求]:  
    1. 使用 {工具/框架}(如 GitHub Actions、Python Airflow)  
    2. 集成 {容错机制}(如重试策略、异常告警)  
    3. 生成 {可观测性} 输出(如日志追踪、执行统计)  
    markdown 复制代码
    示例:请创建自动化部署流程,实现前端项目代码推送到 main 分支后自动发布到生产环境。  
    执行流程:  
    1. 监听 GitHub main 分支代码变更  
    2. 使用 npm run build 生成生产包并进行代码压缩  
    3. 通过 SFTP 上传至服务器 /var/www/html 目录  
    4. 触发 Nginx 配置重载并记录部署日志  
    技术要求:  
    1. 使用 GitHub Actions 工作流  
    2. 添加部署前代码 lint 检查与单元测试  
    3. 失败时自动发送邮件通知并回滚至最近稳定版本
    • 命令行辅助类
    markdown 复制代码
    [任务类型]:请提供 {操作场景} 的 {操作系统} 命令方案  
    
    [需求详情]:  
    1. {具体操作}(如文件批量处理、环境配置)  
    2. 包含 {参数/选项}(如 -r 递归、-v  verbose)  
    3. 处理 {边界情况}(如空文件、权限问题)  
    markdown 复制代码
    示例:请提供 Linux 系统下清理项目中未使用依赖包的命令方案。  
    需求详情:  
    1. 扫描 Node.js 项目中 package.json 与源码的依赖引用  
    2. 列出所有已安装但未被引用的 npm 包  
    3. 支持交互式选择删除或生成清理脚本  
    4. 保留 devDependencies 中的测试依赖
    提示词优化技巧(结构化总结)
  1. 上下文锚定

    • 明确项目技术栈(如 "React + TypeScript 项目")、业务场景(如 "电商结算模块")
    • 示例:"在当前 Vue 3 管理系统中,实现商品库存预警功能"
  2. 需求颗粒度控制

    • 将复杂任务拆解为可执行步骤(如 "1. 创建数据库模型 2. 开发 API 接口 3. 实现前端表格")
    • 反例:"做一个电商网站" → 优化:"开发电商网站的商品搜索模块,包含分词匹配与筛选功能"
  3. 技术约束显式化

    • 指定必须 / 禁止使用的技术(如 "使用 Webpack 5 而非 Vite"、"禁止修改现有路由结构")
    • 示例:"用原生 JavaScript 实现,不依赖任何框架"
  4. 结果验收标准

    • 明确性能指标(如 "首屏加载 < 1.5s")、兼容性要求(如 "支持 iOS 14+ 与 Chrome 80+")
    • 示例:"生成的代码需通过 ESLint 校验(配置文件见 .eslintrc.json)"
  5. 示例引导策略

    • 提供目标代码片段或交互原型(如 "类似 axios 的请求拦截器写法")
    • 格式:" 请按如下风格实现:\njs\n// 示例代码\nfunction request(url) { ... }\n"

格式说明

  • 变量替换:{} 内为需自定义内容,实际使用时替换为具体描述
  • 层级规范:使用 [任务类型] 作为一级标题,[具体要求] 作为二级内容
  • 代码块示例 :通过 markdown 与 包裹,确保语法高亮与格式保留

Chat三种模式

  1. Agent代理模式(默认): 允许Cursor学习和理解我们的项目代码,并且代表们可以直接进行项目代码更改!
  2. Ask对话模式:获取项目代码相关的解释和答案,但是不会直接修改项目代码!
  3. Manual手动模式 :需要我们执行项目上下文(修改范围,后续会详细讲解)重点编辑!
Agent代理模式体验
  • Agent代理模式(默认):全自动代码库操作与复杂任务执行
  • 核心能力:
    • 深度分析项目结构与依赖关系
    • 自主执行多文件修改与跨模块重构
    • 维护长周期任务上下文
    • 独立探索您的代码库,识别相关文件,并进行必要的更改
    • 使用所有可用工具搜索、编辑、创建文件和运行终端命令
    • 将复杂任务分解为可管理的步骤并按顺序执行
  • 生成和修改示例

    1. 新打开一个文件夹
    2. Ctrl+L 开始Chat对话
    3. 对话用例
    markdown 复制代码
    使用html,css,javascript来实现一个贪吃蛇页面!
    要求:
      1. 要求有积分统计
      2. 页面要有多种背景可以切换
      3. 代码添加中文注释
      4. 不能使用var 只能使用let和const声明变量
    1. 生成代码


    5. 运行代码对话

    1. 后续调整代码对话

    在页面中添加倒计时功能,每次60秒!

  • Agent的配置选项

    • Model(选择模型 ):为代理模式预先选择大模型
    • Edit Keybindings(编辑快捷键): 为agent模式设置快速开启快捷键(默认 ctrl + i)
    • Auto-run ( 自动运行 ) :当你让 Agent 修改代码后,自动执行相关命令(如编译、测试、运行),验证修改的正确性。
    • Auto-fix errors ( 自动修复 ) :当自动运行过程中出现错误(如编译失败、测试报错),Agent 会尝试分析错误信息并自动修复。
Ask对话模式体验
  • 默认不会直接修改,需要手动应用修改内容

  • ask模式示例:

    这个贪吃蛇页面如何添加多种模式

  • Ask模式的配置选项

    • Model (模型) : 预先选择应作为 Ask (Ask ) 的默认模型
    • Keybinding : 设置键绑定以切换到 Ask 模式
    • 搜索代码库 : 允许 Cursor 搜索它自己的上下文,而不是当你希望 AI 看到文件时,你必须手动 @ 文件作为上下文
Manual手动模式体验
  • 与 Ask 模式不同,它不探索代码库或运行终端命令;它完全取决于您的具体说明和您提供的上下文(例如,通过** @文件名**),AI 生成修改建议后,还要用户手动点击 "应用" 才会改动代码,且通常是单文件 / 局部代码调整

  • Manual模式示例:

    在 @snake.js @snake.html 中,给所有代码添加注释和解释!

Chat模式的其他细节

代码编辑选项
  1. Review:在差异视图中查看建议的更改

  2. Apply:在"ask / Manual "模式下,使用"应用"按钮显式应用更改

  3. Accept/Reject(接受/拒绝) :进行更改后,决定是保留还是放弃更改(agent模式下)

Checkpoints数据还原
  • 有时,可能希望恢复到代码库的先前状态。Cursor 通过在发出的每个请求以及每次 AI 更改的代码库时自动创建代码库的检查点(Checkpoints)来帮助您解决这个问题。

要恢复到以前的状态,您可以:单击上一个请求的输入框中显示的 Restore Checkpoint 按钮,如下所示

注意:是回复到本次对话之前的状态!!不是本次对话产生的状态!

历史和新建会话

Chat相关配置说明

  • Cursor Settings--Chat

    • Default new chat mode:设置新聊天默认模式,选 "Agent" 则新聊天默认用智能代理交互 ,决定初始聊天交互载体。

    • Chat text size:调整 AI 聊天消息文字大小,"Default" 是默认尺寸,可按需改显示效果,让阅读更舒适。

    • Auto - refresh chats:勾选后,聊天面板闲置再打开时自动新建聊天,保持交互新鲜度,避免旧聊天堆积干扰。

    • Auto - scroll to bottom:新消息生成时自动滚动到聊天面板底部,不用手动翻,方便实时看最新内容。

    • Auto - apply to files outside context in Manual mode:手动模式下,允许聊天对当前上下文外文件自动应用更改,拓展操作范围,处理跨文件任务更便捷。

    • Include project structure(BETA) :勾选后,给模型提供简化目录树,辅助理解代码库布局,让 AI 更贴合项目结构做响应,尚处测试阶段。

    • Full folder contents:启用后,展示完整文件夹内容而非结构大纲,需详细文件内容时开启,便于深度查看。

    • Enable auto - run mode:允许 Agent 不经确认自动运行工具(如执行命令、写文件),效率高但有风险,需信任场景用,要留意误操作。

    • Command allowlist:仅指定命令能自动执行,精准管控,保障安全又保留特定自动操作。

    • Command denylist:列入的命令永不自动执行,规避危险命令,加固安全防线。

    • Delete file protection:启用后阻止 Agent 自动删文件,防误删关键文件,保护数据安全。

    • MCP tools protection:开启则 Agent 不能自动运行 MCP 工具,避免工具误操作影响系统。

    • Dot files protection:已勾选,阻止 Agent 自动改点文件(如.gitignore ),保护版本控制等配置文件。

    • Outside workspace protection:勾选后,Agent 无法自动创建 / 修改工作区外文件,防止影响外部系统,保障工作区独立性。

    • Dialog 'Don't ask again' preferences:管理曾选 "不再询问" 的对话框,方便回顾或重置交互确认逻辑。

    • Collapse input box pills in pane or editor:勾选则折叠聊天面板 / 编辑器输入框里的标识,节省空间,让界面更简洁。

    • Iterate on lints:启用后,Agent 模式聊天自动迭代修复代码检查(linter )错误,助力自动代码优化。

    • Hierarchical Cursor Ignore:启用后,cursorignore 文件规则作用于所有子目录,改配置需重启 Cursor,统一忽略规则时用。

    • Auto - accept diffs:启用后,合成器里的差异(diffs )在不在工作树中就会被接受,自动处理版本差异,简化流程。

    • Custom modes(BETA) :允许创建自定义模式,可按需定制交互逻辑,尚在测试,探索个性化玩法。

    • Play sound on finish(BETA) :聊天响应完成时播放声音提醒,不用一直盯着,及时知晓结果,测试功能。

    • Auto Group Changes(BETA) :自动分组聊天会话中与大语言模型(LLM )交互产生的更改,方便集中 review,测试阶段功能。

    • Web Search Tool(BETA) :已勾选,允许 Agent/ask 模式聊天联网搜索信息,补充知识,让回答更全面,测试功能

内联置能修改(Ctrl+K)

允许用户使用自然语言指令来编写和更新代码。开发者只需通过简单的文本描述,如 "实现一个冒泡排序函数""添加一个用户登录接口" 等,Cursor 就会根据这些自然语言描述生成相应的函数、类或完整模块等代码,将自然语言转化为可运行的代码,大大提高了开发效率,尤其适合快速实现一些功能需求或对代码进行快速修改。

内联编辑 (Cmd/Ctrl+K) 直接在编辑器窗口中生成新代码或编辑现有代码。
适合已知并精准修改文件内容!

  1. 触发修改提示框 在 Cursor 中,我们将按 Ctrl/Cmd K 时出现的栏称为"Prompt Bar"。它的工作原理类似于用于聊天的 AI 输入框,可以在其中正常键入,或使用 @引用其他上下文(后续讲解)。

    Ctrl K的模式说明:

    • 内联生成 :如果在按 Ctrl/Cmd K 时未选择任何代码,Cursor 将根据您在提示栏中键入的提示生成新代码。
    • 内联编辑:对于就地编辑,只需选择要编辑的代码,然后在提示栏中键入即可。
  2. Ctrl+K 体验

    • 内联生成
      1. 打开main.js,光标放文件末尾(无选中代码)
      2. 按Ctrl+K,输入提示: 生成一个带点击动画的按钮组件,用 JavaScript 实现,点击后控制台打印次数
      3. 实现效果
    • 内联编辑
      1. 继续打开刚刚的main.js

      2. 选中任意方法,按Ctrl+K,输入提示:

        方法添加注释和每行代码添加注释说明

Cursor精准上下文指定

  • 在 Cursor 中,精准指定上下文是提升 AI 辅助编程效率的关键。通过明确代码范围、项目结构和业务逻辑,可让 AI 更准确地理解需求,是AI读懂代码,精准响应的关键

Codebase Indexing 代码库索引

  • 打开项目时,每个 Cursor 实例都将初始化该工作区的索引。初始索引设置完成后,Cursor 将自动为添加到工作区的任何新文件编制索引,以使您的代码库上下文保持最新:

    • 快速 "读懂" 你的项目结构(哪些是工具文件、哪些是业务逻辑)
    • 定位相关代码(如搜索 getUser 时,知道优先查 userService.js
    • 理解代码关系(如 Order 类和 Product 类的关联)

Cursor 中的作用:AI 分析索引内容后,生成代码时会更贴合项目实际(如使用已有工具函数、遵循命名规范)。

  • 代码库索引配置和示例
    • 代码库索引的状态位于 cursor settings--Indexing & Docs

    • 测试示例:

      查看当前项目结构,并使用文字图形形式罗列出来!

  • 忽略文件配置

Cursor 读取项目的代码库并为其编制索引以支持其功能。可以通过将 .cursorignore 文件添加到根目录来控制 哪些文件被忽略和Cursor限制访问。

  1. 提升索引速度 :排除大型依赖、生成文件(如 node_modulesdist
  2. 避免干扰:某些配置文件可能包含敏感信息或与当前任务无关

配置 .cursorignore忽略文件:

  1. 自己创建 .cursorignore 文件添加到代码库目录的根目录下,并列出要忽略的目录和文件

  2. 使用cursor配置快捷创建忽略文件 cursor setting > Indexing & Docs > Configure ignored files

Rules 规则

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

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

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

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

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

  • 项目规则配置

    1. 项目下创建规则文件

      • 创建文件夹自定义文件项目/.cursor/rules/随意命名.mdc
      • 快捷命令方式创建 Ctrl + Shift + P > "New Cursor Rule"
    2. 编写项目规则文件

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

  • 用户规则配置

    1. 用户规则在cursor settings -- Rules

    2. 添加规则内容即可

    3. 用户规则不支持 MDC,它们只是纯文本。

  • mdc语法了解 Cursor 的 MDC(Markdown with Cursor)语法是专门为编写项目规则设计的轻量级格式,它结合了 Markdown 的可读性和元数据配置能力。接下来,我们来说明下mdc文件语法。

    • MDC 文件组成部分:

      1. 前置元数据(Frontmatter)

        • --- 包裹的 YAML 格式配置
        • 定义规则的基本属性(如作用范围、优先级)
      2. 规则内容(Markdown 正文)

        • 用 Markdown 语法写具体规则
    • 前置元数据

    yaml 复制代码
        ---
        # 官方约定字段(推荐用,AI 更易理解)
        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 组件 
      • 安全约束规则
      markdown 复制代码
      # 安全规范
      1. 禁止使用 eval() 函数  
      2. SQL 查询必须使用参数化查询,防止注入攻击  
      3. 敏感信息(如 API 密钥)必须从环境变量读取  
      • 特殊语法:引用项目文件 用 @file 引用项目内的配置文件,让 AI 参考:
      markdown 复制代码
      # 工具链配置
      1. ESLint 规则必须符合 @file .eslintrc.js  
      2. 测试用例必须遵循 Jest 框架规范  
    • 完整示例(TypeScript项目规则):

    yaml 复制代码
    ---
    description: "TypeScript 项目编码规范"
    globs: "src/**/*.ts"
    priority: 1000
    ---
    
    # 一、基础规范
    1. 所有文件必须使用 UTF-8 编码  
    2. 统一使用 2 空格缩进  
    
    # 二、类型约束
    1. 禁止使用隐式 any 类型  
       - 示例:`const num: number = 123`(显式)  
       - 禁止:`const num = 123`(隐式)  
    2. 接口命名必须以 `I` 开头(如 `interface IUser`)  
    
    # 三、项目约束
    - 所有 HTTP 请求必须通过 @file src/utils/request.ts 封装的工具  
    - 状态管理必须使用 Redux Toolkit,禁止直接修改 state  

@符号

  • 在 Cursor 中使用 @ 符号在聊天中引用代码、文件、文档和其他上下文的指南,直接更具体的指定上下文环境 以下是所有可用 @ 符号的列表:
    • @Files- 引用项目中的特定文件
    • @Folders - 引用整个文件夹以获得更广泛的上下文
    • @Code - 引用代码库中的特定代码片段或符号
    • @Docs- 访问文档和指南
    • @Git- 访问 git 历史记录和更改
    • @Past Chats- 使用汇总的 Composer 会话
    • @Cursor Rules-使用光标规则
    • @Web- 参考外部 Web 资源和文档
    • @Lint Errors- 引用 lint 错误(仅限Chat)
  1. @File使用和测试

    1. 准备测试文件main.js

      js 复制代码
      /**
       * 用户登录方法
       * @param {Object} params - 登录参数
       * @param {string} params.username - 用户名
       * @param {string} params.password - 密码
       * @returns {Promise} 登录结果
       */
      const sbs = async (params) => {
        try {
          const response = await request.post('/api/login', params);
          return response.data;
        } catch (error) {
          console.error('登录失败:', error);
          throw error;
        }
      };
      
      /**
       * 用户注册方法
       * @param {Object} params - 注册参数
       * @param {string} params.username - 用户名
       * @param {string} params.password - 密码
       * @param {string} params.email - 邮箱
       * @returns {Promise} 注册结果
       */
      const sbs = async (params) => {
        try {
          const response = await request.post('/api/register', params);
          return response.data;
        } catch (error) {
          console.error('注册失败:', error);
          throw error;
        }
      };
    2. 测试@File对话

      查询@main.js 罗列其中的方法

    3. 查看对话结果

  2. @Code使用和测试

  3. @Docs使用和测试

    1. @Docs作用说明

      @Docs 将 Cursor 连接到来自常用工具和框架的官方文档。当需要以下内容的最新权威信息时,请使用它:

      • API 参考:函数签名、参数、返回类型
      • 入门指南 :设置、配置、基本用法
      • 最佳做法 :源中的推荐模式
      • 特定于框架的调试 :官方故障排除指南
    2. @Docs对应文档配置

      可以通过cursor settings -- Indexing & Docs(cursor近期更新频繁,配置页面会有调整)来进行文档索引配置。粘贴所需文档的 URL 后,将显示以下模式:

  4. @Web使用和测试

  • @Web作用说明

    @Web 在实时 Internet 上搜索当前信息、博客文章和社区讨论。当您需要时使用它:

    • 最近的教程 :社区生成的内容和示例

    • 比较 :比较不同方法的文章

    • 最近更新 :Very Recent updates or announcement(最近的更新或公告)

    • 多种视角 :不同的问题处理方法

  1. @Lint Errors使用和测试

    1. @Linter Errors作用和说明

      @Linter Errors 符号会自动捕获并提供有关当前活动文件中的任何 linting 错误和警告的上下文。

    2. 准备错误代码

    java 复制代码
    public class BubbleSort {
        /**
         * 冒泡排序方法
         * @param arr 待排序的数组
         */
        public static void bubbleSort(int[] arr) {
            int n = arr.length;
            // 外层循环控制排序轮数
            for (int i = 0; i < n - 1; i++) {
                // 内层循环进行相邻元素比较和交换
                for (int j = 0; j < n - 1 - i; j++) {
                    // 如果当前元素大于下一个元素,则交换它们
                    if (arr[j] > arr[j + 1]) {
                        int temp = arr[j];
                        arr[j] = arr[j + 1];
                        arr[j + 1] = temp;
                    }
                }
            }
        }
    
        /**
         * 打印数组的辅助方法
         * @param arr 要打印的数组
         */
        public static void printArray(int[] arr) {
            for (int i = 0; i < arr.length; i++) {
                //此处故意出现错误,会出现数组越界
                System.out.print(arr[i+2] + " ");
            }
            System.out.println();
        }
    
        public static void main(String[] args) {
            // 测试数组
            int[] arr = {64, 34, 25, 12, 22, 11, 90};
        
            System.out.println("排序前的数组:");
            printArray(arr);
        
            // 执行冒泡排序
            bubbleSort(arr);
        
            System.out.println("排序后的数组:");
            printArray(arr);
        }
    } 
    1. 测试

Cursor智能插件开发实战

  • Cursor官网开发指导流程:

Cursor需求设计

  1. 需求设计

    • 创建:sbs_chrome插件需求和要求说明
    markdown 复制代码
        实现一款Chrome的插件,要包含下面三个功能:
           1. 解释选中的段落或者关键词
           2. 翻译选中的段落或者关键词(支持中文和英文翻译即可)
           3. 朗读选中的段落或者关键字(支持中文和英文朗读)
           4. 润色和替换选中的文本文案
        细节要求:
           1. 当选中段落或者关键词时,出现插件,直接悬浮在选中关键词和段落上!(显示顺序:解释,翻译,朗读,润色)
           2. 解释,翻译,润色的结果直接在悬浮下方出现结果即可
           3. 翻译添加语言选择(翻译目标: 中文还是英文)
           4. 润色结果可以进行修改,同时提供一键替换功能,替换目标文案内容(可编辑情况下可以直接替换)!
           5. 翻译、解释、润色功能实用kimi的api实现即可,具体参考配置kimi api文档
           6. 朗读直接调用chrome浏览器内置插件即可(提供中文和英文朗读)
           7. 并且帮我们写好readme文档,写清在chrome部署插件的过程
  2. 设计和生成项目UI设计图

    • chat agent模式对话:

    @sbs_chrome插件需求和要求说明 根据插件需求文档,帮我写一份项目的UI文本设计图,将设计图写到 sbs_ui_chrome插件UI设计图 文件中! 要求页面简洁,清晰!

    • 生成 sbs_ui_chrome插件UI设计图

  3. 配置和导入kimi doc文档

  4. 生成kimi api key 登录kimi api用户中心:platform.moonshot.cn/console/api... 创建kimi api key

Chrome插件实现

  1. 准备一个参考界面()

  2. 实现插件功能

    @sbs_chrome插件需求和要求说明 @sbs_ui_chrome插件UI设计图 基于需求和UI设计图,以@plugin.png 图片风格,直接在当前chrome-plugin文件夹下实现插件功能,同时提取单独配置文件用于填写kimi api url和key的位置!代码添加中文注释,实现后再次自检查,确保插件正常运行和实现功能!

  3. 配置kimi api key

    json 复制代码
    {
      "kimi_api_url": "https://api.moonshot.cn/v1/chat/completions",
      "kimi_api_key": "sk-xxxxxxxxxxxxxxxxxxxxxxx"
    } 
  4. 代码生成效果

Chrome插件调试和发布

  1. chrome浏览器--右上角三个点--扩展程序--管理扩展程序--加载未打包的扩展程序--选中项目所在的文件夹

  2. 第一次可能出现的问题(使用cursor调试)

    将插件文件夹发布到chrome浏览器,报图片的错误,你给我从网上查找几张图片放在对应的位置即可。 很大概率,cursor不给我们生成缺少的图片,安全原因,那么就需要我们自己手动添加!!

  3. 插件--详情--扩展程序选项 再次配置Kimi API地址和Key

    4.添加完成后进行功能测试和调试(有问题就让cursor自动修复)

    • 翻译
    • 解释
    • 润色
    • 朗读
相关推荐
win4r5 小时前
🚀 SuperClaude让Claude Code编程能力暴增300%!小白秒变顶尖程序员!19个专业命令+9大预定义角色,零编程经验也能开发复杂项目,完全碾
aigc·ai编程·claude
ζั͡山 ั͡有扶苏 ั͡✾8 小时前
AI辅助编程工具对比分析:Cursor、Copilot及其他主流选择
人工智能·copilot·cursor
码农飞哥8 小时前
能生成二维码的浏览器插件来了
ai编程·浏览器插件
每天开心9 小时前
深入探索 React Hooks: useState 与 useEffect 的力量 🌟
前端·javascript·ai编程
LeeAt9 小时前
AI单词拍照识别移动端项目(一)
前端·react.js·ai编程
精灵vector1 天前
构建专家级SQL Agent交互
python·aigc·ai编程
老A技术联盟1 天前
超实用的Cursor使用技巧之案列分析-教你基于Cursor零代码开发一个chrome插件
人工智能·cursor
莫大h1 天前
Gemini-cli安装避坑指南
aigc·ai编程