持续更新:Cursor AI 编程超详细指南(当前最好用的AI 编程工具)

本文持续更新,敬请期待更多内容。

更新日志:

更新日期 更新内容
2024-10-13 添加了 @Git 注记的用法

这一次,AI真懂你的代码

如果你偶尔关注一些AI编程相关的内容,想必你已经对Cursor有所耳闻。在这里插入图片描述

比如OpenAi的联合创始人Andrej Karpathy最近在X中提到,他正在使用Cursor来取代Github Copilot来作为主要编程的辅助方式。

这是目前自己最喜欢并且几乎已经离不开的一款AI编程工具。

Cursor是一款独立开发的AI驱动代码编辑器,在使用上它提供了与VSCode类似的用户体验。

这意味着如果你熟悉VSCode,使用Cursor几乎没有学习曲线。你可以轻松地将现有的主题、快捷键和设置迁移到Cursor中,保持你熟悉的工作环境。

其次,相比于跳转到网页端去提问ChatGPT或者Claude等模型,Cursor内部支持多种模型。这样就可以在一个界面内持续思考和编程,更加沉浸,不需要跳来跳去打断思路。

当然,最重要的是,对于代码的理解和解释更加精准,可以针对整个代码库的文件进行索引。尤其是对于工程项目,对于复杂的调用关系,文件关系,普通的AI模型几乎没有对这类场景进行有效的提问。

但这些对于Cursor来说,都是基础操作。在这里,你可以非常方便地添加文件、文件夹甚至整个代码库,作为你的上下文进行提问。尤其是对于工程类的项目,想要结合全局,解释一段代码,或者单纯的希望帮你找到某一段代码,修复某个问题,都将会非常好用。

比如我现在是一个初步接触项目代码的新人,我希望快速搞明白关于某个业务的逻辑。那么就可以输入问题之后,直接选用整个代码库作为上下文。

在这里插入图片描述
然后可以看到Cursor在回答具体的问题之前,先进行代码库的扫描。

然后进行回答。更方便的是,由于对整个代码库的文件进行了索引,回答中的文件或者代码,点击可以直接跳转到对应的文件。

在这里插入图片描述

关注该关注的,忽略该忽略的

不过在某些场景下,我们并不需要对全部文件进行索引,比如当项目中包含大量生成文件、日志文件或非核心代码文件时,索引它们不仅浪费时间,还可能让检索结果不够精确。而Cursor 也刚好考虑到了这一点,可以排除不必要的文件或目录。

具体的操作过程可以见演示视频。

创建.cursorignore文件

首先你需要在项目的根目录中使用一个 .cursorignore 文件,它的工作方式与 .gitignore 在 git 中的工作方式相同,可以排除特定文件或目录,如日志文件或临时文件,或者只包含特定类型的文件。

1、忽略特定文件。

例如,想忽略日志文件或特定目录时,你只需在 .cursorignore 文件中添加相应的路径规则。

对于一个新上手的项目,此时可以先参考 .gitignore 文件,因为它已经列出了许多不需要纳入版本控制的文件,例如构建文件、日志、依赖项等。

# 忽略 `dist` 目录中的所有文件
dist/

# 忽略所有 `.log` 文件
*.log

# 忽略特定文件 `config.json`
config.json

比如我并不希望回答从framework目录中作为参考,那么在 .cursorignore 文件中添加framework/,就可以达到目的。

2、仅包含特定文件

还有一些场景,你仅仅需要包含某一类特定的文件。

相关语法:

  • *:忽略所有文件。

  • !:在忽略所有文件的情况下,使用 ! 例外规则指定某些文件或目录不被忽略。

假设你希望在仅关注 app 目录中包含的Python 文件(.py),而忽略其他文件类型,可以使用以下 .cursorignore 文件配置:

# 忽略所有文件
*
# 不忽略 app 目录
!app/
# 不忽略 app 目录中的子目录
!app/*/
!app/**/*/
# 不忽略 .py 文件
!*.py

在这个例子中:

  • *:此规则忽略项目中的所有文件和目录。
  • !app/:使 app 目录不被忽略,表示此目录将被包含。
  • !app/*/!app/**/*/:确保 app 目录下的所有子目录也不会被忽略。
  • !*.py:明确指示 Python 文件(.py)不被忽略,允许这些文件被包含进来。

通过这种方式,你能确保 Cursor 仅索引 app 目录及其子目录中的 .py 文件,其他文件(如 .txt.log 文件)则被排除。这个规则特别适合在大项目中仅索引关键代码文件,而忽略其他无关内容。

重新索引代码库

左上角,点击Cursor,选择首选项,进入Cursor Settings

选择Features,来到Codebase Indexing设置。

注意,大部分情况下,代码库索引会自动与最新的代码库更改同步。但是如果手动修改了.cursorignore 文件配置,最好是手动执行一下,点击“Resync Index”即可。这样,如果你的项目中有任何内容文件是 AI 绝对不需要读取的,忽略这些文件可能会提高答案的准确性。

用好@标记

为了更方便地向大语言模型提供上下文信息,Cursor 内设了不同地 @ 注记。

本质上,这些 @ 注记是为了方便地注入不同类型的上下文信息到当前的对话里。

比如当你在对话框输入 @Files@Folders 注记时,Cursor 会自动弹出对你代码仓库的检索列表。你可以输入想要导入上下文的文件名或目录,相应的文件内容或目录信息便会自动注入到上下文中。

当使用 @Web 注记时,Cursor 会自动将你的问题提交至搜索引擎,并提取搜索结果作为上下文。

这里推荐一个可能会忽略掉的标记使用,那就是 @Git 注记。

每次写完代码之后,可能要进行备份留档。

最上面的两个选项分别是:

  1. PR (Diff with Main Branch)

    • 这个选项指的是拉取请求(Pull Request, PR)中的差异比较,主要是你的当前分支与主分支(Main Branch)的代码差异。选择这个选项后,Cursor会将这些差异(即改动内容)作为上下文传递,用来帮助你在对话中分析 PR 的内容。
    • 注意,实际在用的时候,这个功能会出现一些问题,一般不用这个。
  2. Commit (Diff of Working State)

    • 这个选项指的是你当前工作状态下的代码与最近一次提交(commit)之间的差异比较。也就是说,它会将当前尚未提交的改动与上次提交的版本进行对比,差异部分将作为上下文提供给模型。这在你需要对尚未提交的代码进行讨论时很有帮助。

剩下的列表是最近的具体的commit。

当你选择某个 commit 时,Cursor 会将该次提交中的代码修改作为上下文提供给大语言模型。这意味着,选中某个 commit 后,模型可以基于该提交的具体改动内容进行分析、讨论或生成相关建议。

这样我可以比较方便的查看某一次Commit 的主要变更内容。

我自己日常使用中,最常用的也是这个,例如每次commit完成之后,我会将这次变更的细节进行一次输出,整理成文档。

参考资料

Cursor官方文档:https://docs.cursor.com/get-started/migrate-from-vscode

猜你喜欢

转载自blog.csdn.net/He_r_o/article/details/142703271