Cursor 101

Cursor入门教程0 - 为什么放弃Github Copilot?

Cursor 和 Github Copilot的能力对比,有多来越多的人开始从Github Copilot转向Cursor,那么为什么Cursor会这么受欢迎呢?其实很多推荐Cursor的作者都没有说明白,Cursor到底比Github Copilot强在哪里。从本质上讲Cursor主要优势体现在两个方面。

作者 鸟飞鱼跃 and 原文链接

有多来越多的人开始从Github Copilot转向Cursor,为什么Cursor会这么受欢迎呢?对于AI辅助编码,什么样的能力才是最重要的?其实很多推荐Cursor的作者都没有说明白,Cursor到底比Github Copilot强在哪里。

从本质上讲Cursor主要优势体现在两个方面:

  1. 代码修改能力
  2. 上下文引用能力

代码修改能力: Cursor的核心优势


想象一下,你正在写一篇文章。"插入"就像是在文章末尾添加新内容,而"修改"则是对已经写好的部分进行调整和改进。在编程中也是如此:

  • "插入代码"就像是在程序末尾添加新功能
  • "修改代码"则是对现有代码进行优化或修正

这两种操作带来的编码体验是天差地别的。有了修改能力,你就像有了一个随时待命的编程助手,可以帮你快速调整和完善代码,而不仅仅是在末尾添加新内容。

这一核心优势不仅使Cursor在功能上更加强大,还让整个编码体验更加流畅和高效。

Github Copilot的局限性

Github Copilot 主要基于上下文进行插入代码的操作。虽然这已经很有帮助,但它的功能仅限于追加新代码。

在 Github Copilot 官方的例子中:

你需要在JavaScript文件中输入函数头:

function calculateDaysBetweenDates(begin, end) {

然后GitHub Copilot会自动建议提示的其余部分。这样的操作只是追加了一段代码,并没有修改当前的代码。

Cursor的全方位编辑能力

相比之下,Cursor不仅可以插入新代码,还可以直接修改现有代码

这种能力体现在以下几个方面:

  1. 多行编辑: Cursor能够根据当前的代码上下文同时建议多行代码的修改,你要做的就是按下Tab键,让Cursor帮你修改就可以了。

    Cursor多行编辑示例

    这种丝滑的体验真的让你感觉到像是有一个人在跟你一起写代码。

  2. 内联编辑: 通过使用Ctrl/Cmd K快捷键,你可以选择要编辑的代码块,然后在提示栏中输入修改指令。Cursor会根据你的指令智能地修改选中的代码。

    Cursor内联编辑示例

    如果觉得Cursor修改后的代码符合预期,直接点击Accept就可以了,这种交互方式也是大家感觉使用Cursor非常顺手的原因。(主要还是Github Copilot不支持修改,没办法提供这种体验)

  3. 智能预测: Cursor能够智能预测你下一步的代码意图,并给出相应的建议。

    Cursor智能预测示例

    这个例子中你修改了updates变量的名称为updatesToServer,Cursor就会预测下面的updates变量也应该更新为updatesToServer。

    所以在你修改了代码的某个地方之后,Cursor会自动提示你其他地方的代码也需要同步修改, 所以这时候你就只需要一路的Tab按下去就行了,爽到飞起。

  4. Composer功能: 虽然目前还处于Beta阶段,但Cursor的Composer功能已经展现出同时编辑和生成多个文件的能力,这在复杂项目中尤其有用。

这种全方位的编辑能力使得Cursor在使用体验上远超Github Copilot,让开发者真正感受到"起飞"的感觉。

上下文引用能力: 更直观,更强大


在AI辅助编码中,准确理解和利用上下文信息至关重要。Cursor在这方面也表现出色,提供了更直观、更强大的上下文引用能力。

Cursor的@符号引用

在Cursor的AI输入框中(如Cmd K、Cmd L或Terminal Cmd K),你只需输入@符号,就会弹出一个建议列表,显示可引用的上下文信息。这个列表会根据你的输入自动过滤,只显示最相关的建议。

Cursor @符号引用示例

可供引用的上下文选项清晰明了,用户一看就知道每个选项代表什么样的上下文信息。并且这些选项基本覆盖了日常开发中所有可能用到的上下文信息。

其中 @Codebase 更是提供了全局代码的检索能力,Cursor会提前对你的项目代码进行Indexing处理,并把相关的索引信息存储到本地(Copilot则是依赖Github的API进行远程检索)。

Github Copilot的复杂引用方式

相比之下,Github Copilot提供了Chat participants和Chat variables两种上下文引用方式,分别使用@#符号。这种设计不仅增加了使用的复杂性,命名方式也不够直观清晰。

与Cursor相比,GitHub Copilot能提供的上下文选择范围也比较有限,无法达到Cursor那样全面的覆盖。

Chat participants: Github Copilot Chat participants

Chat variables: Github Copilot Chat variables

值得一提的是,Github Copilot直到今年初才跟进了多文件上下文引入的功能。从Github的更新日志中可以看出,他们在这方面还有很多需要向Cursor学习和借鉴的地方。

结语

Cursor通过其强大的代码修改能力和直观的上下文引用功能,为开发者提供了一个比Github Copilot更高效、更智能的AI编码助手。如果你正在寻找一种能真正提升编码效率和质量的工具,不妨尝试一下Cursor。它可能会让你体验到前所未有的编码"起飞"感觉!

你有使用过Cursor或Github Copilot吗?欢迎分享你的经验和看法!