AI 驱动编程新体验:Cursor 使用后的思考

1,094 阅读6分钟

大家好,我是 方圆。其实接触和使用 Copilot 和 Cursor 已经有蛮长的时间了,前者在最初使用时自动补全功能给我带来了很大的冲击,再到后来的 Cursor 以编辑器的形式出现提供了更强大的功能后更让我对 AI 编程工具有了新的认识,所以本篇文章主要介绍 Cursor 的使用方法和强大的功能,并谈一谈我对 AI 辅助工具的思考和看法。

自动补全

快捷地边写边生成

Cursor 提供了非常便捷地编写边生成的功能,如下所示:

image.png

对于已经定义好的 checkCreateCommand 参数校验方法想要让 AI 帮忙完善,可以使用 CMD + K 来随时唤起对话框,输入你想要生成的代码内容,Cursor 会自动生成相应的代码片段到编辑器中,而不需要再去 Chat 对话框,非常方便。

image.png

Cursor 不只于光标处补全

Cursor 的 Tab 补全功能非常强大,不仅仅局限于光标处补全,如下所示:

img_3.png

尽管光标并没有在报红的代码行(而是在上一行),但是它依然能够识别到该问题,并且提出对应的补全建议,将错误的 StringUtils 判断替换成 null 判断,按下 Tab 键 即可完成补全。

此外,如果光标已经不在我们想要编辑的代码行,那么 Cursor 能通过按下 Tab 键 自动将光标移动到需要编辑的代码行上:

img.png

这样大家可能体会不到它带来的便利,举一个例子,比如我们正在补全封装查询条件的逻辑,但方法末尾的 ; 没写:

img_6.png

Cursor 能够在补全完查询条件逻辑后,再按下 Tab 键,光标会自动移动到方法末尾,并且补全上 ;,如下所示:

img_7.png

给我的感受是:在开发大部分逻辑时,自动补全几乎能完成 70% 以上的工作,甚至可以称为:面向 Tab键 编程

部分接受补全内容

这一点与 Copilot 一样,Cursor 也支持通过快捷键 CMD + → 来滑动光标接受部分补全内容,在设置中需要把 Partial Accepts 打开:

img_15.png

这样在类似如下代码补全示例中,可以通过快捷键选择留下部分想要的代码,而不是一股脑全要:

img_8.png

Agent 模式

Cursor 的 Agent 模式非常强大,而且提供了很多模型选择:

img_9.png

打开开关的会被加入到对话框中供选择,并且也提供了 Auto 选项来自动选择模型,用以平衡输出结果和输出速度:

img_10.png

在上下文的选择上 Cursor 提供了两种快捷地选择方法,分别是 @#

  • @ 符能选择的内容很多,文件、文档、代码、Git 记录、链接、剪切板等等: img_11.png

  • # 则是专注于文件的选择: img_12.png

  • 在对话框上悬浮的 “方框(药丸)” 表示正在活跃的上下文内容: img_13.png

Agent 任务样例

在处理任务时,它是不间断地完成,并且提供了部分采纳和一键快速采纳的功能,如下所示为我想让它帮我生成一个查询方法时的效果:

img_4.png

在这个过程中,Cursor 会自动生成代码并进行测试,确保代码的正确性和可用性,如下所示:

img_5.png

它能够执行命令行来校验是否存在编译问题。在接受所有内容后,依然可以通过 CheckPoint 来回滚到最初的代码版本,非常方便:

img_14.png

在执行完这个任务后,从 Controller 层到 Service 层再到 DAO 层,Cursor 编写的代码一行都不用修改便能拿来直接用,这相比于一行行的去写实在快了很多。

Cursor Rule

Cursor Rule 是 Cursor 很不错的功能,我们可以定制一些规则比如 “总是以简体中文输出” 或 “你是一个 Java 技术专家,精通各种框架” 等等,这样便不需要在每次和 Cursor 对话时都要重复这些内容了:

img_16.png

并且在 Cursor Community: cursor.directory 中找到很多现成的规则,可以拿来直接使用。

IDEA 过渡 Cursor 插件

大多数 Java 开发都会使用 IntelliJ IDEA,所以一时切换到 Cursor 会很不适应,而且我觉得目前没有任何一个 IDE 能够替代 IDEA,但随着 AI 的发展以后就不一定了。在看了大家的一些经验后,我觉得 “Cursor 负责编码;IDEA 负责调试” 是一个不错的选择,而且 Cursor 和 IDEA 中也提供了插件能够实现丝滑地切换。

Cursor 插件

  • IntelliJ IDEA Keybindings
  • Extension Pack for Java
  • Spring Boot Extension Pack
  • Switch2IDEA

IDEA 插件

  • Switch2Cursor

使用感受

  1. AI 辅助编程一定会改变大家的开发习惯:我觉得使用 AI 并不困难,更多的是有没有这个习惯,比如说:开发遇到某个问题时,能不能想到使用 AI 来辅助实现;在使用代码补全功能时,会不会选择先写更完善的注释;自动补全功能越强大,写代码时间越少,按 Tab 键的时间增加,甚至有时候会刻意等待补全;使用 Agent 模式时,更加考验大家如何通过写 Prompt 把想要做的事情描述清楚,随着 Agent 增强,写代码时间会大幅减少,写 Prompt 的时间和 Review AI 生成代码的时间不断增加
  2. 即便 Cursor 作为 IDE 不好用,但它依然会让大部分开发者从 IDEA 逐步切换到 Cursor:主要原因还是因为它强大的 AI 功能,IDEA 目前虽然好用,但是它本身提供的 AI Assistant 不对国内地区开放,并且看评价并不好用,此外,AI 辅助工具以插件的形式嵌入到 IDEA 中功能会受限,比如 Copilot 在 VSCode 和 IDEA 中提供的功能便有所不同,在前者中有更好的支持
  3. 收费不是问题:即便目前 Cursor 收费每月 20 刀,如果允许在日常开发中使用,我也非常愿意为此付费,因为它真的能为大家节省很多的时间
  4. 美团宣称 52% 代码由 AI 生成并不夸张:如果 AI 辅助功能能随便用,这个比例我觉得可以更大
  5. 能替代一些人力,但不能完全取代:AI 只是工具,做的也只是面上的工作而已

巨人的肩膀