本文持续更新,敬请期待更多内容。
文章目录
- 这一次,AI真懂你的代码
- 关注该关注的,忽略该忽略的
- 1. 创建.cursorignore文件
- 2. 重新索引代码库
- 参考资料
这一次,AI真懂你的代码
如果你偶尔关注一些AI编程相关的内容,想必你已经对Cursor有所耳闻。
比如OpenAi的联合创始人Andrej Karpathy最近在X中提到,他正在使用Cursor来取代Github Copilot来作为主要编程的辅助方式。
这是目前自己最喜欢并且几乎已经离不开的一款AI编程工具。
Cursor是一款独立开发的AI驱动代码编辑器,在使用上它提供了与VSCode类似的用户体验。
这意味着如果你熟悉VSCode,使用Cursor几乎没有学习曲线。你可以轻松地将现有的主题、快捷键和设置迁移到Cursor中,保持你熟悉的工作环境。
其次,相比于跳转到网页端去提问ChatGPT或者Claude等模型,Cursor内部支持多种模型。这样就可以在一个界面内持续思考和编程,更加沉浸,不需要跳来跳去打断思路。
当然,最重要的是,对于代码的理解和解释更加精准,可以针对整个代码库的文件进行索引。尤其是对于工程项目,对于复杂的调用关系,文件关系,普通的AI模型几乎没有对这类场景进行有效的提问。
但这些对于Cursor来说,都是基础操作。在这里,你可以非常方便地添加文件、文件夹甚至整个代码库,作为你的上下文进行提问。尤其是对于工程类的项目,想要结合全局,解释一段代码,或者单纯的希望帮你找到某一段代码,修复某个问题,都将会非常好用。
比如我现在是一个初步接触项目代码的新人,我希望快速搞明白关于某个业务的逻辑。那么就可以输入问题之后,直接选用整个代码库作为上下文。
然后可以看到Cursor在回答具体的问题之前,先进行代码库的扫描。
然后进行回答。更方便的是,由于对整个代码库的文件进行了索引,回答中的文件或者代码,点击可以直接跳转到对应的文件。
关注该关注的,忽略该忽略的
不过在某些场景下,我们并不需要对全部文件进行索引,比如当项目中包含大量生成文件、日志文件或非核心代码文件时,索引它们不仅浪费时间,还可能让检索结果不够精确。而Cursor 也刚好考虑到了这一点,可以排除不必要的文件或目录。
具体的操作过程可以见演示视频。
1. 创建.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
文件)则被排除。这个规则特别适合在大项目中仅索引关键代码文件,而忽略其他无关内容。
2. 重新索引代码库
左上角,点击Cursor,选择首选项,进入Cursor Settings
选择Features,来到Codebase Indexing设置。
注意,大部分情况下,代码库索引会自动与最新的代码库更改同步。但是如果手动修改了.cursorignore 文件配置,最好是手动执行一下,点击“Resync Index”即可。这样,如果你的项目中有任何内容文件是 AI 绝对不需要读取的,忽略这些文件可能会提高答案的准确性。
参考资料
Cursor官方文档:https://docs.cursor.com/get-started/migrate-from-vscode