如果无法改变环境,那就调整自己适应环境
一、前言
为什么不使用其他AI工具
- ChatGPT:它主要用于回答问题和编写简单的样例代码 ,在实际开发流程中,其深度融入和代码编写的便捷性存在不足。例如,在一个需要快速迭代功能的项目中,ChatGPT难以实时根据项目上下文和已有代码库提供针对性的代码生成和修改建议,更多地是偏向于学习辅助。
- 通义灵码:虽支持VSCode插件,能提供快速提示,但多数仅适用于片段代码的优化。在处理涉及多个文件相互调用和依赖的复杂项目时,它无法全面地理解和处理整个项目结构。例如,不支持多文件操作,尽管有@workspace提示,但功能有限,在实际开发中,难以独立完成一个功能模块的代码编写,更多是在局部代码细节上提供一些优化建议。
Cursor产品介绍
- 开发框架:基于VSCode构建的AI驱动代码编辑器,深度融合了代码编辑和AI智能功能,为开发者提供一体化的开发环境。
- 智能内核:内置GPT - 4模型,提供强大的智能编程辅助,无论是代码生成、代码理解还是问题排查,都能借助其高效完成。
- 使用成本:拥有完全免费的基础功能,付费后使用更流畅,免费也能满足基本需求,采用渐进式使用模式,不会给用户设置过高的付费门槛,让不同需求和预算的开发者都能轻松上手。
优势对比
- 专业适配性:基于VSCode构建的AI编辑器,比一般插件功能更强大,它不仅仅是对代码编写的辅助,而是从整个项目的角度出发,提供全方位的开发支持,更适合代码编写工作。
- 智能联想:具备快速提示和跨文件联想功能。在编写代码时,能够智能地关联项目中不同文件的代码逻辑,提供更精准的代码补全和建议。
- 多文件支持:支持多文件和文件夹操作,能够全面理解和处理整个项目的文件结构,无论是修改单个文件还是对多个文件进行协同修改,都能轻松应对。
- 对话连贯:支持聊天上下文,在与Cursor的交互过程中,它能记住之前的对话内容,使得交流更加连贯和高效,开发者无需反复解释项目背景和需求。
- 问题定位:支持控制台快速定位问题,当代码运行出现问题时,能快速在控制台中定位错误信息,并提供相应的解决方案。
- 模板便捷:支持prompt模板,通过预设的模板,开发者可以更快速地引导Cursor生成符合特定需求的代码或解决方案。
二、快速入门
安装配置
- 便捷安装:搜索Cursor,一键安装。
- 环境同步:自动同步VSCode插件和配置,确保开发者在熟悉的开发环境基础上无缝使用Cursor的强大功能。
- 网络设置:国内使用建议配置VPN,以保证网络连接的稳定性和功能的正常使用。
账号类型
- 免费账号:存在使用次数限制,调用优先级相对较低,但能满足基本的使用需求,适合对AI编程辅助需求不频繁的开发者。
- 付费账号:可通过买共享账号,也可以进行代充。付费账号能享受更流畅的使用体验和更高的调用优先级,大大提升开发效率。
- 商业版:针对企业级用户,提供更高级的功能和定制化服务,满足团队协作和大规模项目开发的需求。
三、核心功能
AI代码生成
-
快捷调用:快捷键为
Cmd + K
(Mac)/Ctrl + K
(Windows),方便开发者快速调用代码生成功能。 - 自然转换:支持自然语言描述转代码,只需用自然语言描述想要实现的功能,Cursor就能快速生成相应的代码。
- 上下文理解:具备智能上下文理解能力,能够根据项目的代码上下文和已有的代码逻辑,生成更贴合实际需求的代码。
代码解释
-
快捷操作:快捷键为
Cmd + L
(Mac)/Ctrl + L
(Windows),便于快速对代码进行解释。 - 逐行解析:可对代码进行逐行解析,帮助开发者深入理解每一行代码的作用和逻辑。
- 算法剖析:能够进行算法思路分析,帮助开发者更好地理解代码背后的算法设计和实现思路。
四、最佳实践
代码审查场景
在团队开发中,代码审查是确保代码质量的重要环节。使用Cursor可以快速分析提交的代码,指出潜在的问题,如代码规范不符合、逻辑漏洞等。例如,在审查一个新功能的代码实现时,通过@Code
引用特定的代码片段,让Cursor检查代码是否符合团队的代码规范,同时分析其逻辑是否严谨。它可以指出代码中可能存在的空指针引用风险,或者是否有更高效的算法可以替代现有的实现方式。这不仅提高了代码审查的效率,还能提升代码的整体质量。
代码重构场景
当项目需要进行代码重构以提升性能或可维护性时,Cursor能发挥巨大作用。比如,对于一个使用了传统回调方式处理异步操作,导致代码嵌套过深、难以维护的模块,使用Cursor的代码重构功能。通过向Cursor描述重构的目标,如“将这段异步代码用Promise或async/await方式重构,以提高代码的可读性”,Cursor可以生成重构后的代码。它会自动处理好异步操作的转换,包括正确处理错误处理逻辑和代码结构的调整,大大节省了开发者手动重构的时间和精力。
新项目搭建场景
在开始一个全新的项目时,Cursor可以帮助快速搭建项目框架。例如,当要创建一个基于React的单页应用时,使用@Folders
引用项目文件夹,然后告诉Cursor项目的基本需求,如“创建一个包含用户登录、产品列表展示和购物车功能的React项目,使用Redux进行状态管理”。Cursor会自动生成项目的基本目录结构,包括创建必要的组件文件、配置文件等,并在文件中填充基本的代码结构和逻辑,为项目的后续开发奠定良好的基础。
学习新技术场景
在学习新的技术框架或编程语言时,Cursor可以作为一个强大的学习工具。比如,在学习Vue3时,通过@Docs
访问Vue3的官方文档,同时向Cursor提问,如“Vue3中的Composition API和Options API有什么区别,分别在什么场景下使用”,Cursor不仅可以从官方文档中提取相关信息进行解答,还能结合实际的代码示例进行说明。通过与Cursor的交互,开发者可以更深入地理解新技术的概念和应用场景,加快学习速度。
使用场景分类&评分
- 添加代码功能:☆☆☆☆☆
-
优化代码:☆☆☆☆
- 代码优化,代码重构。
- 编写代码前使用XX设计模式进行开发。
-
开发组件:☆☆☆☆
- 描述需求,询问如何开发。
- 粘贴任务单的需求描述进行开发。
-
控制台错误:☆☆
- 常见问题好处理。
- 复杂问题不准确。
-
工具使用场景
- 比对两个日志文件的版本差别。
- 生成解决方案文档。
- 编写Node小工具脚本。
-
问题解决方案寻找思路:☆☆☆
- 描述问题,询问解决方案。
- 描述需求,询问如何处理。
- 不具体的事情,容易出现幻觉,比如使用什么框架完成功能的时候,会创造出没有的API去实现功能。
-
文档编写
- 组织文档结构。
-
新技术学习
- 源码学习。
- 业务场景解决方案学习。
如何提升Cursor的使用效果
- 使用官方提示词:使用官方的提示词,选择对应领域的提示词,可参考:https://cursor.directory/ 。
- .cursorrules :合理运用.cursorrules规则,进一步优化与Cursor的交互效果,但目前关于此部分的详细说明较少,开发者可在实践中不断探索。
@命令
- @Files:引用某个文件。
- @Folders:引用文件夹。
- @Code:引用特定的代码片段。
- @Docs:访问外部文档。
- @Git:引用git的commits、diffs或PR。
- @Codebase:跟⌘ + Enter一样,但提供更多的配置选项。
- @Web:支持互联网内容搜索。
COMPOSER
- 多文件操作AI:COMPOSER是一种能够使用工具的AI,它允许在一个对话窗口里同时对多个文件进行修改。
- 项目构建:开发者甚至可以要求它从零开始,完整地构建一个可运行的项目,大大提高项目开发的起始效率。
BUG FINDER
在代码调试过程中,当遇到难以定位的bug时,使用@Code
引用相关代码区域,然后向Cursor描述问题现象,如“这段代码在执行某个操作时出现了意外的结果,帮忙查找问题所在”。Cursor会分析代码逻辑,尝试找出可能导致问题的原因,比如变量未正确初始化、函数调用参数错误等,并给出相应的解决方案。这对于快速定位和解决代码中的问题非常有帮助,尤其是在大型项目中,能够大大缩短调试时间。
shader学习
在学习shader编程时,Cursor可以作为一个智能学习伙伴。通过@Web
搜索相关的shader教程和资源,同时向Cursor提问,如“如何实现一个简单的纹理映射效果的shader”,Cursor可以提供代码示例,并详细解释每一行代码的作用和原理。在学习过程中,如果遇到不理解的概念,也可以随时向Cursor请教,它会结合实际的代码和图形效果进行解释,帮助开发者更好地理解shader编程的原理和技巧。
使用建议
不适用场景
- 复杂业务逻辑设计:Cursor在复杂业务逻辑设计方面存在局限性,难以全面、深入地理解和规划复杂的业务流程。
- 架构层面决策:对于架构层面的决策,它无法综合考虑项目的整体需求、性能、可扩展性等多方面因素,给出专业的架构设计建议。
- 跨业务体系深入上下文理解:在需要跨业务体系深入理解上下文的场景中,Cursor难以把握不同业务之间的关联和影响,提供准确有效的支持。
- 创意性编程任务:创意性编程任务往往需要独特的思维和创新的想法,Cursor在这方面的能力相对较弱,难以提供富有创意的编程思路。
Cursor功能这么强,那我们还有什么要注意的呢
- AI幻觉问题:AI存在幻觉现象,Cursor也不例外。在面临一些困难问题时,它可能会虚构出不存在的API来编写代码,导致代码无法正常运行。
- 谨慎接受代码建议:在Cursor给出的代码建议中,对于一些复杂的代码文件,不要完全接受。因为Cursor可能会修改一些它认为正确的位置,但这些修改可能会引发其他代码问题。例如,在workbench中,它可能会偷偷修改属性,从而导致弹框无法正常使用 。