掘金 人工智能 9小时前
Cursor核心功能及开发实战
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文介绍了Cursor,一款集成了AI功能的代码编辑器,它通过代码自动补全、智能代码重写、Chat对话模式等功能,显著提升开发者的编码效率。文章详细阐述了Cursor的三大核心AI功能,以及Chat模式的各项特性,并提供了使用场景和优化技巧,帮助开发者更好地利用Cursor进行代码编写、重构和项目管理。

⌨️ **代码自动补全**: Cursor提供强大的代码自动补全功能,支持单行和多行代码补全,能够根据上下文预测并生成代码建议,帮助开发者快速编写代码,提高编码效率。

✍️ **智能代码重写**: Cursor具备智能代码重写功能,可以对多行代码进行语法升级、结构重组、安全修复等操作,实现代码的快速优化和改进。

💬 **Chat对话模式**: Cursor的Chat对话模式允许用户通过自然语言与代码库交互,实现代码生成、修改、重构等操作,简化了开发流程,提高了开发效率,支持Agent代理模式和Ask对话模式。

Cursor三大核心AI功能

代码自动补全(Tab键)

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

    单行/多行代码补全

      已有代码片段:
    //需求:写一个工具类计算数组平均值public class ArrayUtils {   // 按tab会完成补全}
      按Tab键--Cursor自动生成的代码
    //需求:写一个工具类计算数组的平均值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;    }}

    智能代码重写

      已有代码片段
    //使用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键自动补全
    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());}

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

      多行数据联想多行批量修改

    光标位置预测

      示例Tab自动预测位置+补充注释

    接受、接受部分和拒绝

      准备测试类
        public class Student {     private String name;    private int  age;    //tab     //tab 接收完整补全    //ctrl + -> 部分和逐步接收补全 [需要开启部分补全配置]    //esc 或者 继续输入 拒绝补全  }

    Tab相关配置说明配置修改位置: cursor settings > tab

Chat对话模式

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

Cursor Chat 核心功能解析

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

快速开始

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

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

    上下文锚定

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

    需求颗粒度控制

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

    技术约束显式化

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

    结果验收标准

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

    示例引导策略

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

格式说明

Chat三种模式

    Agent代理模式(默认): 允许Cursor学习和理解我们的项目代码,并且代表们可以直接进行项目代码更改!Ask对话模式:获取项目代码相关的解释和答案,但是不会直接修改项目代码!Manual手动模式:需要我们执行项目上下文(修改范围,后续会详细讲解)重点编辑!
Agent代理模式体验
Ask对话模式体验
Manual手动模式体验

Chat模式的其他细节

代码编辑选项

    Review:在差异视图中查看建议的更改

    Apply:在“ask / Manual ”模式下,使用“应用”按钮显式应用更改

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

Checkpoints数据还原

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

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

历史和新建会话

Chat相关配置说明

内联置能修改(Ctrl+K)

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

内联编辑 (Cmd/Ctrl+K) 直接在编辑器窗口中生成新代码或编辑现有代码。

适合已知并精准修改文件内容!

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

    Ctrl K的模式说明:

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

    Ctrl+K 体验

      内联生成
        打开main.js,光标放文件末尾(无选中代码)按Ctrl+K,输入提示:

        生成一个带点击动画的按钮组件,用 JavaScript 实现,点击后控制台打印次数

        实现效果
      内联编辑

        继续打开刚刚的main.js

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

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

Cursor精准上下文指定

Codebase Indexing 代码库索引

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

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

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

配置 .cursorignore忽略文件:

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

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

Rules 规则

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

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

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

@符号

    @File使用和测试

      准备测试文件main.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;  }};

      测试@File对话

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

      查看对话结果

    @Code使用和测试

    @Docs使用和测试

      @Docs作用说明

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

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

      @Docs对应文档配置

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

    @Web使用和测试

    @Lint Errors使用和测试

      @Linter Errors作用和说明

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

      准备错误代码

    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);    }} 

      测试

Cursor智能插件开发实战

Cursor需求设计

    需求设计

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

    设计和生成项目UI设计图

      chat agent模式对话:

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

      生成 sbs_ui_chrome插件UI设计图

    配置和导入kimi doc文档

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

Chrome插件实现

    准备一个参考界面()

    实现插件功能

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

    配置kimi api key

    {  "kimi_api_url": "https://api.moonshot.cn/v1/chat/completions",  "kimi_api_key": "sk-xxxxxxxxxxxxxxxxxxxxxxx"} 

Chrome插件调试和发布

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

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

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

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

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

      翻译

      解释

      润色

      朗读

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

Cursor AI 代码编辑 代码补全 智能重写
相关文章