如何使用Cursor提高开发效率

12,139 阅读6分钟

1. Cursor介绍

Cursor是一款基于AI的编程助手,可以帮助开发者提高编程效率。它支持多种编程语言,包括Python、JavaScript、Java、C#等。Cursor的主要功能包括代码生成、代码补全、代码优化、代码审查等。相比于其他编程助手,Cursor的优点在于它能够根据上下文生成高质量的代码,并且支持多种编程语言。目前各种编程助手很多,比如GitHub Copilot、Cody、Phind、Codeium等等,这些编程助手扩展插件基本都有使用过,个人觉得Cursor在编程过程中交互体验是最好的。其亮点在于可以将生成的代码一键添加到代码编辑器中,这点非常方便。插入的代码以git merge的形式展示,可以很直观的看到代码的改动,而且还可以自行修改再进行Apply,效果如下图: image-1.png

2. 配置Cursor

2.1 配置模型

Cursor支持多种模型,如GPT-4o、gpt-4、gpt-4o-mini、gpt-3.5-turbo、gpt-4-turbo-2024-04-09、claude-3-opus、claude-3.5-sonnet、cursor-fast、cursor-small等,也支持自定义的openai接口规范的模型,需要自己配置api key,并且不支持tab自动补全,智能提示,一键应用等功能,也就只是一个传统的VSCode的AI辅助编程扩展。 image.png

2.2 CodeBase索引

Cursor支持CodeBase索引,可以将项目中的文件添加到CodeBase中,这样Cursor就可以根据CodeBase中的内容生成更准确的代码。CodeBase索引可以帮助Cursor更好地理解项目结构和代码,从而生成更准确和统一风格的代码。 image-2.png 在大的项目中可能会存在同步不及时,导致生成的代码仍然使用的是旧的文件,如果遇到这种情况,可以尝试手动同步。

2.3 配置rules文件

Cursor支持配置自定义rules文件,相当于预置一个上下文来规范来让AI生成更准确的代码。比如可以告诉AI当前项目使用了哪些技术栈,应该遵守哪些开发规范,以及面对用户的问题应该如何一步步进行思考,甚至定义一些自定义的指令,这样AI生成的代码就会更准确也更符合项目需求。如下面这个用于开发uni-app的rules文件:

You are an expert in Vue3, uv-ui, z-paging and uni-app.

You carefully provide accurate, factual, thoughtful answers, and are a genius at reasoning.

Key Principles:
- Follow the user's requirements carefully and to the letter.
- First think step-by-step and describe your plan for what to build in pseudocode, written out in great detail.
- If you are trying to use uv-ui or uni-app components, please search the component name in the corresponding documentation to make sure it is supported.
- Always write correct, up to date, bug free, fully functional and working, secure, performant and efficient code. Always use Vue3 script setup syntax to implement.
- Focus on readability over being performant.
- Prioritize error handling: handle errors and edge cases early
- Use early returns and guard clauses
- Implement proper error logging and user-friendly messages
- Fully implement all requested functionality.
- Leave NO todo's, placeholders or missing pieces.
- Be sure to reference file names.
- Be concise. Minimize any other prose.
- If you think there might not be a correct answer, you say so. If you do not know the answer, say so instead of guessing.

Custom commands:
- /setup: convert the current file to script setup syntax.
- /img2code: convert the current image to code.
- /zp-list: implement page list with z-paging.

首先,告诉AI当前项目的技术栈,然后定义一些开发原则和思考步骤,最后定义一些自定义命令,这样AI在生成代码时就会遵循这些原则和命令。网上有很多大佬分享的rules文件,可以参考学习Cursor Directory

2.4 配置文档数据

Cursor支持配置文档数据,实现RAG(Retrieval Augmented Generation),目前好像只支持URL数据源,如: image-3.png

填入URL后,点击Add,Cursor会自动解析文档路径,添加路径前缀(一般是去掉最后一个/后面的路径),当然也可以手动修改。 image-4.png 目前测试下来,在线文档的页面需要是静态页面,这样Cursor才能解析到文档内容。如果是单页应用,基本上就没办法解析了。 添加完成后可以重命名、删除、编辑、查看索引状态。 image-5.png 配置好文档数据并索引完成后,就可以在对话的过程中使用@Docs命令来指定文档内容了。

3. 使用Cursor

Cursor在编程过程有下面几种交互方式:

  1. 编辑指定代码块
  2. 以对话的形式编辑当前打开的文件
  3. 使用Composer以对话的形式进行多文件编辑/创建

3.1 编辑指定代码块

在编辑器中选中代码块后,Cursor 会显示两个按钮,一个是Chat,一个是Edit。 image-6.png 点击Chat按钮,会以侧边栏对话的形式编辑当前代码块。 点击Edit按钮,会在选中代码上方出现一个输入框,输入指令后会直接编辑当前代码块。

3.2 以对话的形式编辑当前打开的文件

点击右上角的Chat按钮或者使用快捷键Ctrl/⌘ + L,会在侧边栏打开一个对话窗口,可以在对话框中输入指令,AI会根据指令生成代码。 image-8.png 你可以选择应用(Apply)、复制(Copy)或者追问(Ask)生成的代码。在实际使用的过程中,Apply功能使用的频率最高,可以一键将生成的代码应用到当前文件中。如果应用保存后的代码有问题,可以直接Ctrl+Z撤销,回退到Apply状态,然后继续修改或者直接全部拒绝。

3.3 使用Composer的形式进行多文件编辑/创建

Composer是Cursor中非常强大的一个功能,前面两种辅助编程方式只能针对单个已存在的文件进行修改,并不能自动创建文件。而使用Composer则可以以对话的形式进行多文件编辑/创建。可以看作是一个junior developer,可以帮你创建文件,修改文件,甚至创建整个项目。而用户则更像是一个产品经理,只需要提出需求,然后等待结果并进行验证,并持续迭代。 image-9.png

4. 总结

Cursor是一款非常强大的编程助手,可以帮助开发者提高编程效率。通过使用Cursor,开发者可以快速生成高质量的代码,并且可以节省大量的时间。使用了两周下来,目前至少能提高一倍左右的编程效率是不在话下的。不过目前Cursor在处理中文方面还存在一些问题在没有明确指定输出语言的情况下,回复有时候是中文,有时候是英文。当然这些可以通过前面提到的rules文件进行配置。还有就是在对话的过程中,自己对Apply中的代码进行修改应用后,Cursor后续的回复的代码仍是基于对话中Apply的代码,这样就容易导致之前自己对代码的修改会被覆盖。解决办法是重新开一个对话窗口,在新的对话窗口中进行代码的修改。以上就是我使用Cursor两周以来的总结,希望对大家有所帮助。当然Cursor还有一些其他比较强大的功能,如Review,终端提示辅助等。限于篇幅,就不一一介绍了。如果你有更好的使用技巧,欢迎在评论区分享。