cursor 使用经验分享

cursor 是一款基于 VSCode 的 AI 优先编辑器,如果你还没有体验过它,我强烈建议看完这篇,因为 cursor 真的在改变编程游戏的规则,在了解 cursor 前,可以先思考一下我们日常在编程环节都做哪些事情,我日常开发中,占据绝大多少的是:

1、编写代码

2、测试代码 & 验证效果

3、阅读之前的代码

4、查阅文档(例如:MDN)

5、书写文档

6、review 代码,提交 commit

7、优化代码,重构代码

。。。可能还有一些小的事情,以上所有的事情都可以通过 cursor 来提速,让我们一起看一下 cursor 吧!

它的能力

cursor 帮助我们的基础方式如下:

  • tab 代码补全功能:生成,修复,重构代码

  • 提示框(cmd + k): 生成 or 修改局部(当前文件)代码

  • 聊天(cmd + L / option + command + B):新增功能 ,更广泛代码问题对话的地方

  • @ 符号:它是用来引用一些东西,算是通过关联更重要的上下文来得到更准确的回复

这样来看,我之前使用的通义灵码也都可以,但是它不一样,不一样的地方有:

  1. 交互不一样:它除了有其他产品的补全代码,它还能对当前代码进行修改(理解为 bug 修复,重构代码),它还能预测你的光标要移动到的位置来让你真正沉浸式编程

  2. 模型不一样:它使用目前最强的 Claude 3.5 Sonnet

  3. 感觉不一样:当我们在 VSCode 使用其他工具,会感觉有割裂感,但是 cursor 不会,我会感觉 AI 能力和编辑器融合的很好,这样我们能更加融入AI 编程中,真正实现 AI 结对编程(和 AI 甜蜜双排,从此写代码不孤独)

  4. 生成的结果不一样:最重要的当然是生成的结果,这段使用的时间中,cursor 得到的结果,基本上都是我想要的,偶尔有点小问题,也能很快找到原因手动解决掉

你以为这就完了,这其实才刚刚开始,下面我们看一下 cursor 真正的杀手锏的能力

1)终端对话

对于前端来说,很多 linux 命令,我们不常用,有时候也会使用但总是记不起来,需要查阅文档,在 cursor 中,我们直接在终端按下 cmd + k,就可以唤起对话,描述出要做的事情来询问对应的命令是什么,AI 会帮我们找到命令,然后输入到命令行

image-20241123005615242

image-20241123005615242

除此之外,我们还可以使用它来生成 commit 信息,先在终端中,输入‘git diff | cat’,获取最近的修改,然后 cmd + k,在提示栏中输入‘git commit message’, Cursor会给你生成一个带 commit message 的 git commit 命令

2)composer(beta 能力,需要开启)

composer 其实就类似于 bolt.new (一个通过描述生成项目的工具),你给出需求,它会自动创建文件(夹)来实现需求,如何使用请看文档,后面我会使用 composer 能力来做一个项目分享它强大的能力

image-20241123133733933

image-20241123133733933

更详细的请看:https://cursor101.com/zh/article/cursor-composer

3)文档能力

在 Cursor Setting > Features >Docs 我们可以添加我们日常使用的文档,例如:mdn 文档,这样我们需要查询文档就不用去游览器,直接在对话框@ 选 Docs 来选择我们要查询的文档

4)code review (beta 能力,需要开启)

image-20241122233238837

image-20241122233238837

review 目前可能没有那么强大,我的方式是多问几次,三次左右,来保证潜在问题都被 AI 发现,最后自己再 review 一遍

5)强大实用的 @ 符号

无论是单独的对话框还是代码内对话弹窗,我们输入 @ 后就会看到

image-20241123124648079

image-20241123124648079

6)AI fix

当我们在代码报错后,鼠标移入会有 AI FIx 按钮,或者终端报错,我们选中报错,会有 Add to Chat 按钮,我们可以在对话中进行报错询问

7)预测你的下一步

它会猜你下一步做什么,并且把光标放到合适的位置,让你真正一路 tab

以下是一些还没有体验过的规则:

8)自定义规则 (AI rules)

我们可以在项目根目录新建 .cursorrules 来自定义规则,有一个专门的社区:https://cursor.directory/,里面有实用的规则,我们可以直接复制使用

9).cursorignore

类似 .gitignore ,定义不让 cursor 读取的内容,保证安全

使用场景

1)学习源码 、新技术、框架等等

通过 cursor 的超强能力,我们可以拉取一个源码到 cursor 中,渐进的询问当前项目的问题,我们想要询问编程概念问题;获取代码建议和最佳实践;调试和错误排查的时候我们可以通过 cmd + L 唤起对话框来进行连续提问

2)做项目、写项目文档

3)重构代码

4)利于 @ Docs 能力,建立自己的知识索引库

5)写小工具网站,快速想法变为现实,例如:在线工具库,导航网站等等,这对有想法的产品经理来说是福音,他们可以快速把自己想法变成现实

一些 cursor 看法

cursor 目前面临的质疑有:

  1. 面对复杂项目就没有作用了,甚至会把事情变得更加糟糕

  2. cursor 产生的代码质量不高

那 cursor 无论怎么说都是一个工具,它的核心是提高我们的效率。我会它当做成雇的初中级工程师,所以我在让它帮我完成工作前,我肯定会事无巨细的告诉它这个工作如何完成,并且我会通过 @ 文件能力,仅仅把相关的上下文给他,来防止它上下文太大导致回复不准确问题(也就是产生幻觉),所以有三个能力在使用 cursor 非常非常重要:

  1. 提问能力:cursor 核心还是对话,通过 chat 来解决问题,得到我们想要的内容,那么描述清楚问题是一切的基础,推荐阅读《提问的智慧》

  2. 拆解需求能力:要有把复杂问题拆解为简单问题,把大需求分解为小需求的能力,然后清晰描述出小需求给 cursor ,让它每次只做一个小的需求

  3. 有强大的知识储备,解决问题能力:cursor 根据我们提出的问题(描述)生成回复,那我们必须要知道这个东西如何实现,能够清楚描述出来,得到的结果如果有细小的错误,我们自己也能及时发现并修复

哦对了,了解 AI 如何工作也是必备的,这样才能更好的使用 AI,把 AI 当成自己雇佣的开发者,多了解它才能让它发挥最大的作用

所以 cursor 到底能够有多厉害,关键还是在人,高手中的 cursor 和初级开发者手中的 cursor 是两个产品

对比 windsurf

windsurf(风帆冲浪)和 cursor 类似,基于 VSCode 的 AI 编辑器,它是 codeium 下的产品

官网:https://codeium.com/windsurf

根据官方的描述,它相比较 cursor 在体验上更加流畅,在处理复杂大型项目更加友好,它将流程(flow)作为核心设计理念,提供更连贯的开发体验,个人测试了一下,它在写新功能场景下,使用 Write mode ,它会帮我们更加流畅的创建需要的文件,实现功能。

如果必须做一个选择,那我目前还是会渲染 cursor 的

怎么免费白嫖会员服务

cursor:其实很简单,cursor 新人是有 14 天体验会员,cursor 账号可以使用 Google 账号,那我们就可以在我们体验会员过期后,使用 Google email (https://mail.google.com/mail/u/0/#inbox)申请子账号的能力来实现 cursor 会员自由

windsurf(免费领取会员链接:https://codeium.com/offers?offer_code=codeium-thanks-you ),它目前在推广阶段,可以免费领取两个月,使用的也是 Claude 3.5 Sonnet 模型

总结

常用技巧(来源网络:https://x.com/LinearUncle/status/1841703117865550038)

cursor_use1 (1)

cursor_use1 (1)

cursor 这类的产品真的是颠覆了开发模式,现在我们可以在 cursor 这样的编辑器 all in one,而且我们可以更多的关注业务,减少重复代码工作,那我们节省下的精力就可以:

  • 让我们写出更加规范的代码

  • 让我们研发流程更加规范,如果真正做到每次让 cursor 做一个小需求,然后完成后,我们提交一个 commit,然后提交 pr,这样能避免一个 pr 改动太大的问题

  • 让我们可以有更多时间解决有挑战的事情,提升自己

  • 让我们能够从基础 CRUD 脱离,去思考

如果你真的使用 cursor ,你会发现代码都被 AI 写了,会产生一种完啦,我快要被替代了的感觉,是的,我是这样想的,面对变化最好的变化就是拥抱变化,加入变化,这样才能更好的找到破局的方法,AI 对编程行业真的在进行颠覆性的改变,并且不可阻挡

如果觉有有用,点个赞再走吧,这对我真的很重要,谢谢啦!

参考

Cursor101:https://cursor101.com/zh/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/922911.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux系统编程之进程基础知识

概述 在Linux系统中,进程是指一个正在运行的程序实例。每个进程都有一个唯一的进程标识符,即PID,操作系统通过这个PID来唯一识别和管理各个进程。进程不仅仅是程序代码的运行实例,它还包含了程序运行时所需的各种资源,…

LabVIEW发动机热磨合试验台

在汽车发动机的研发和质量控制中,发动机热磨合试验是关键环节。它能够检验发动机在实际运行条件下的性能,及时发现异响、振动、漏油等潜在问题。通过搭建基于LabVIEW的高效测试平台,可以显著提高发动机的可靠性和使用寿命。下面介绍LabVIEW开…

【C++】C++11新特性详解:可变参数模板与emplace系列的应用

C语法相关知识点可以通过点击以下链接进行学习一起加油!命名空间缺省参数与函数重载C相关特性类和对象-上篇类和对象-中篇类和对象-下篇日期类C/C内存管理模板初阶String使用String模拟实现Vector使用及其模拟实现List使用及其模拟实现容器适配器Stack与QueuePriori…

js+jquery实现经典推箱子游戏

纯前端项目,只使用html,css,js,jquery实现经典推箱子游戏,直接下载本地双击index.html即可运行体验。 游戏展示 开始界面 完成游戏 代码展示

【Pytest+Yaml+Allure】实现接口自动化测试框架

一、框架思想 requestsyamlpytestallure实现接口自动化框架。结合数据驱动和分层思想,将代码与数据分离,易维护,易上手。使用yaml编写编写测试用例,利用requests库发送请求,使用pytest管理用例,allure生成…

[HarmonyOS] 解决HMRouter路由地址无法抽取的问题

解决HMRouter路由地址无法抽取的问题 背景 最近开始学习HarmonyOS开发,搭建项目的时候采用了 HMRouter 路由框架,在项目里使用到路由跳转,官方链接在这: https://gitee.com/hadss/hmrouter/blob/master/HMRouterLibrary/README…

ElasticSearch学习了解笔记

搜索引擎的原理: 1、查询分析(自然语言处理)理解用户需求 2、分词技术 3、关键词搜索匹配 4、搜索排序 lucence Lucene 是一个成熟的权威检索库 Elasticsearch 的搜索原理简单过程是,索引系统通过扫描文章中的每一个词&#xff…

ffmpeg视频滤镜:提取缩略图-framestep

滤镜描述 官网地址 > FFmpeg Filters Documentation 这个滤镜会间隔N帧抽取一帧图片&#xff0c;因此这个可以用于设置视频的缩略图。总体上这个滤镜比较简单。 滤镜使用 滤镜参数 framestep AVOptions:step <int> ..FV....... set frame st…

【C++11】可变参数模板/新的类功能/lambda/包装器--C++

文章目录 一、可变参数模板1、基本语法及原理2、包扩展3、empalce系列接口 二、新的类功能1、默认的移动构造和移动赋值2、成员变量声明时给缺省值3、defult和delete4、final与override 三、STL中一些变化四、lambda1、lambda表达式语法2、捕捉列表3、lambda的应用4、lambda的原…

云网络基础- TCP/IP 协议

文章目录 典型服务模式TCP/IP 协议设置和查看IPIP地址的分类:IP地址组成: 网络位主机位组成克隆:产生一台新的虚拟机win2008 典型服务模式 • C/S,Client/Server架构 – 由服务器提供资源或某种功能 – 客户机使用资源或功能 TCP/IP 协议 • TCP/IP是最广泛支持的通信协议集合…

java基础知识(Math类)

引入&#xff1a;Math 类包含用于执行基本数学运算的方法&#xff0c;如初等指数、对数、平方根 import java.util.Math 1.abs绝对值 int abs Math.abs(-9); 2.pow求幂 double pow Math.pow(2,4); 3.向上取整 double ceil Math.ceil(3.9);//ceil 4 4.向下取整 dou…

什么是 WPF 中的依赖属性?有什么作用?

依赖属性&#xff08;Dependency Property&#xff09;是 WPF 的一个核心概念&#xff0c;它为传统的 .NET 属性提供了增强功能&#xff0c;支持绑定、样式、动画和默认值等功能。通过依赖属性&#xff0c;WPF 提供了一种灵活的数据驱动的方式来处理 UI 属性。 1. 什么是依赖属…

线性代数空间理解

学习线性代数已经很久&#xff0c;但是在使用过程中仍然还是不明所以&#xff0c;比如不知道特征向量和特征值的含义、矩阵的相乘是什么意思、如何理解矩阵的秩……。随着遇到的次数越来越多&#xff0c;因此我决定需要对线性代数的本质做一次深刻的探讨了。 本次主要是参考了3…

Jmeter的组件执行顺序

在 Apache JMeter 中&#xff0c;组件的加载和执行顺序遵循一定的规则&#xff0c;但有些组件在同一层级中可能会根据它们在测试计划中的位置来决定具体的执行顺序。以下是这些组件的大致加载和执行顺序&#xff0c;以及哪些组件属于同一层级&#xff1a; 线程组&#xff08;Th…

计算机网络八股整理(一)

计算机网络八股文整理 一&#xff1a;网络模型 1&#xff1a;网络osi模型和tcp/ip模型分别介绍一下 osi模型是国际标准的网络模型&#xff0c;它由七层组成&#xff0c;从上到下分别是&#xff1a;应用层&#xff0c;表示层&#xff0c;会话层&#xff0c;传输层&#xff0c;…

今天你学C++了吗?——C++中的类与对象(第二集)

♥♥♥~~~~~~欢迎光临知星小度博客空间~~~~~~♥♥♥ ♥♥♥零星地变得优秀~也能拼凑出星河~♥♥♥ ♥♥♥我们一起努力成为更好的自己~♥♥♥ ♥♥♥如果这一篇博客对你有帮助~别忘了点赞分享哦~♥♥♥ ♥♥♥如果有什么问题可以评论区留言或者私信我哦~♥♥♥ ✨✨✨✨✨✨ 个…

【C++习题】14.滑动窗口_找到字符串中所有字母异位词

文章目录 题目链接&#xff1a;题目描述&#xff1a;解法C 算法代码&#xff1a;图解 题目链接&#xff1a; 438. 找到字符串中所有字母异位词 题目描述&#xff1a; 解法 暴力解法&#xff1a; 字母排序后运用滑动窗口解题。 滑动窗口哈希表&#xff1a; 我们可以优化一下&am…

Spring Boot集成MyBatis-Plus:自定义拦截器实现动态表名切换

Spring Boot集成MyBatis-Plus&#xff1a;自定义拦截器实现动态表名切换 一、引言 介绍动态表名的场景需求&#xff0c;比如多租户系统、分表分库&#xff0c;或者不同业务模块共用一套代码但操作不同表。说明 MyBatis-Plus 默认绑定固定表名的问题。 二、项目配置 1. 集成 M…

深入探索API爬虫工作的技术难点与高效解决思路

在大数据与信息化高速发展的今天&#xff0c;API&#xff08;应用程序编程接口&#xff09;爬虫成为了数据收集与分析的重要工具。然而&#xff0c;API爬虫工作并非一帆风顺&#xff0c;它面临着诸多技术挑战。本文将深入探讨几个API爬虫工作的技术难点&#xff0c;并提出相应的…

css效果

css炫彩流光圆环效果 <!DOCTYPE html> <html><head><meta charset"utf-8" /><title></title><style>*{margin: 0;padding: 0;}body{width: 100%;height: 100vh;}.container{position: relative;width: 100%;height: 100vh…