为什么放弃Github Copilot?
Cursor 和 Github Copilot的能力对比,有多来越多的人开始从Github Copilot转向Cursor,那么为什么Cursor会这么受欢迎呢?其实很多推荐Cursor的作者都没有说明白,Cursor到底比Github Copilot强在哪里。从本质上讲Cursor主要优势体现在两个方面。
有多来越多的人开始从Github Copilot转向Cursor,为什么Cursor会这么受欢迎呢?对于AI辅助编码,什么样的能力才是最重要的?其实很多推荐Cursor的作者都没有说明白,Cursor到底比Github Copilot强在哪里。
从本质上讲Cursor主要优势体现在两个方面:
- 代码修改能力
- 上下文引用能力
代码修改能力: Cursor的核心优势
想象一下,你正在写一篇文章。"插入"就像是在文章末尾添加新内容,而"修改"则是对已经写好的部分进行调整和改进。在编程中也是如此:
- "插入代码"就像是在程序末尾添加新功能
- "修改代码"则是对现有代码进行优化或修正
这两种操作带来的编码体验是天差地别的。有了修改能力,你就像有了一个随时待命的编程助手,可以帮你快速调整和完善代码,而不仅仅是在末尾添加新内容。
这一核心优势不仅使Cursor在功能上更加强大,还让整个编码体验更加流畅和高效。
Github Copilot的局限性
Github Copilot 主要基于上下文进行插入代码的操作。虽然这已经很有帮助,但它的功能仅限于追加新代码。
在 Github Copilot 官方的例子中:
你需要在JavaScript文件中输入函数头:
function calculateDaysBetweenDates(begin, end) {
然后GitHub Copilot会自动建议提示的其余部分。这样的操作只是追加了一段代码,并没有修改当前的代码。
Cursor的全方位编辑能力
相比之下,Cursor不仅可以插入新代码,还可以直接修改现有代码。
这种能力体现在以下几个方面:
1、多行编辑:Cursor能够根据当前的代码上下文同时建议多行代码的修改,你要做的就是按下Tab键,让Cursor帮你修改就可以了。
这种丝滑的体验真的让你感觉到像是有一个人在跟你一起写代码。
2、内联编辑:通过使用Ctrl/Cmd K快捷键,你可以选择要编辑的代码块,然后在提示栏中输入修改指令。Cursor会根据你的指令智能地修改选中的代码。
如果觉得Cursor修改后的代码符合预期,直接点击Accept就可以了,这种交互方式也是大家感觉使用Cursor非常顺手的原因。(主要还是Github Copilot不支持修改,没办法提供这种体验)
3、智能预测: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),你只需输入@符号,就会弹出一个建议列表,显示可引用的上下文信息。这个列表会根据你的输入自动过滤,只显示最相关的建议。
可供引用的上下文选项清晰明了,用户一看就知道每个选项代表什么样的上下文信息。并且这些选项基本覆盖了日常开发中所有可能用到的上下文信息。
其中 @Codebase 更是提供了全局代码的检索能力,Cursor会提前对你的项目代码进行Indexing处理,并把相关的索引信息存储到本地(Copilot则是依赖Github的API进行远程检索)。
Github Copilot的复杂引用方式
相比之下,Github Copilot提供了Chat participants和Chat variables两种上下文引用方式,分别使用@和#符号。这种设计不仅增加了使用的复杂性,命名方式也不够直观清晰。
与Cursor相比,GitHub Copilot能提供的上下文选择范围也比较有限,无法达到Cursor那样全面的覆盖。
Chat participants:
Chat variables:
值得一提的是,Github Copilot直到今年初才跟进了多文件上下文引入的功能。从[Github的更新日志](https://github.blog/changelog/2024-02-12-vs-code-copilot-chat-january-2024-version-0-12/)中可以看出,他们在这方面还有很多需要向Cursor学习和借鉴的地方。
结语
Cursor通过其强大的代码修改能力和直观的上下文引用功能,为开发者提供了一个比Github Copilot更高效、更智能的AI编码助手。如果你正在寻找一种能真正提升编码效率和质量的工具,不妨尝试一下Cursor。它可能会让你体验到前所未有的编码"起飞"感觉!