一文搞懂cursor

Daotin 2025-01-09 编辑

背景

cursor断断续续也用了几个月了,tab功能确实用的很happy,还有claude加持的chat,不管是对代码进行提问,还是修改,都很舒服。

所以想进一步好好学习cursor的进阶使用,包括composor agent功能等,全面摸索一下。

功能

废话不多说,比如介绍什么是cursor,如何安装使用的就免了。

直接介绍常用的功能。

Tab 自动补全

这是用的最多的功能。

Cursor 和 GitHub Copilot 完成代码的最大区别在于:GitHub Copilot 可以在光标位置插入文本。它无法编辑光标周围的代码或删除文本。

  • 在光标周围建议编辑,而不仅仅是插入额外的代码。
  • 同时修改多行。

Chat 对话(CTRL+L)

Cursor Chat 让您在代码库中提问或解决问题。

为了能够更好的解决问题,需要提供:

  • 清晰的指令
  • 足够的上下文Content

关于上下文:

  • 默认情况下,Cursor Chat 包含当前文件作为上下文。
  • 通过@符合,可以添加额外的上下文Content信息

@符号支持的功能:

#### @Files 引用文件。支持拖放的形式添加文件。

**注意:指定文件的话,Cursor中如果@ 某个代码文件,cursor会尽量完整读取(测试临界点2000行)

对于Cmd K 分块策略,Cursor 也根据内容长度以不同方式使用文件引用。有auto,full file,outline,chunks。

  • 自动
    • 根据文件大小自动选择三种阅读策略之一
  • 完整文件
    • 整个文件作为上下文使用。
  • 大纲
    • Cursor 解析文件的大纲并使用该信息作为上下文。
    • Cursor 将文件分成较小的块,并选择最相关的一个。

@Folders

将整个文件夹作为上下文引用。@Folders 在需要提供大量上下文时特别有用。

相当于@Files整个文件夹下的文件。

@Code

引用某个文件特定的代码片段。

@Docs

Cursor 附带了一套爬取、索引并准备好作为上下文使用的第三方文档。

如果没有,还可以自己添加自定义的文档链接。

使用案例:基于第三方文档进行搜索,使结果最准确。

@Git

使用 @Git 将 git 提交、差异或拉取请求添加到您的提示中。

使用场景:

  • 使用Cursor查找某一次提交可能存在的问题
  • 使用@diff of working state 生成本次提交commit

@Codebase

从整个代码仓库查找上下文信息,遵循:

  • 收集:扫描您的代码库以寻找重要文件/代码块
  • 重新排序:根据与查询的相关性重新排列上下文项
  • 推理:思考使用上下文的计划
  • 生成:提出响应

@Web

使用 @Web,Cursor 根据您提供的查询和上下文构建搜索查询,并在网络上搜索相关信息作为额外的上下文。这对于查找最新信息特别有用。

可以通过在 Cursor settings > Features > Chat 下启用“始终搜索网络”,使 Cursor 在每个查询中搜索网络。这相当于在每个查询中使用 @web

@Chat

此功能目前仅适用于 Cmd K。

用于将右侧当前聊天消息作为打开窗口的上下文。

使用场景:当希望将其应用于编辑或生成代码。

@Definitions

将所有附近的定义添加到Cmd K作为上下文。

比如:@https://your-link.com:在cursor响应之前,先访问链接。

使用场景:可以用来总结文章。

命令面板(CTRL+K)

在编辑器窗口中生成新代码或编辑现有代码。

Composor 作曲家(CTRL+I)

分为normal/Agent模式。

Normal(普通模式)

normal提供了代码探索和生成的核心功能:

  • 搜索您的代码库和文档
  • 使用网络搜索
  • 创建和写入文件
  • 访问扩展@符号命令

Agent(代理模式)

  • 功能特点:Agent 模式下,Cursor 扮演智能编程助手的角色,能够自主完成复杂的编程任务。它可以:
  • 自动上下文理解:自动从代码库中提取相关上下文信息,主动分析项目结构和相关代码,理解用户需求。
  • 多文件操作:同时处理多个文件的修改、创建或删除。
  • 命令执行:直接在编辑器中运行终端命令,自动安装依赖或执行脚本。
  • 任务规划与执行:根据用户的高层次指令,制定详细的实现方案,并逐步执行。
  • 适用场景:适用于复杂的项目需求,如项目初始化、代码重构、错误诊断和修复等。Agent 模式能够处理涉及多个文件和步骤的任务,减少用户的手动干预,提高开发效率。

每次生成代码时,Composer 都会创建一个检查点。可以通过单击该检查点附近restore返回到任何以前的版本。如果不喜欢当前的更改并想要恢复到较早的状态,这会很方便。

Composor与Chat聊天的比较:

  • chat:询问有关您的代码的问题。为您的代码提供建议,然后您可以将其应用到您的代码中。询问有关您的代码的一些知识。
  • Composer :给出一些更改代码的说明。在多文件中重构代码。在多文件中添加代码。(能够生成代码并创建文件和目录)

简单来说,就是composor会比chat可以多文件增删改。

Cursor agent模式下,默认读一个代码文件的前250行,如果不够,偶尔会主动续读,增加250行;在部分要求明确的情况,Cursor会执行搜索,每次搜索结果最多为100行代码。

Cursor 规则

  • 全局规则:在 Cursor 设置中的 General > Rules for AI 下设置。
  • 项目特定规则:在项目根目录的 .cursorrules 文件中定义。这些规则允许您根据自己的编码风格和项目需求定制 AI 的行为。

换句话说,Rules for AI 是针对所有项目的全局提示词,而cursorrules相当于每个项目的提示词配置。

关于cursorrules如何配置,可以参考:

  • https://cursor.directory/
  • https://cursorlist.com/
  • https://github.com/PatrickJS/awesome-cursorrules

参考文档