小白的Cursor入门指南
📅 2025-01-17 | 🖱️
从VS Code, (Code-Server)转到Cursor,不知不觉已经三个月了。这三个月里,Cursor逐渐成为了我的主力开发工具,它强大的 AI Promgraming功能极大地提升了日常开发和工作的效率。本文是基于Cursor官方文档,整理的入门指南。
Cursor是VS Code的一个fork,在VS Code文本编辑的基础上,开发如何以最好的方式使用AI编程的功能。 Cursor会定期基于VS Code的最新版本作为基础更新(rebase)。
为什么Cursor不是一个VS Code的扩展?作为独立应用程序,Cursor 对编辑器的 UI 拥有更多控制权,从而实现更高级的 AI 集成。一些功能,如Cursor Tab和CMD+K,无法作为现有编码环境的插件。
使用Cursor时可以一键导入VS Code的扩展(Extensions)、主题(Themes)、设置(Settings)和快捷键绑定(Keybindings)等配置。
Cursor目前主要提供四大功能:
- Cursor Tab - 强大的AI自动代码补全功能
- Cursor Chat - 帮助搜索和理解代码。使用它来探索codebase、提问和获取解释。
- CMD + K
- Cursor Composer - 帮助编写和编辑代码。它提供了一个工作区,可以在其中生成新代码并直接将更改应用到文件中。
Cursor Tab #
Cursor Tab提供强大的AI自动代码补全功能。
由自定义模型提供支持,Cursor Tab可以:
- 围绕光标提供编辑建议(suggestions),而不仅仅是插入其他代码。
- 一次修改多行。
- 根据你最近的更改和linter错误提出建议(suggestions)。
- 免费用户免费获得2000条建议。专业版和商业版计划获得无限建议。
当Cursor仅添加附加文本时,补全将显示为灰色文本。如果建议修改现有代码,它将显示为当前行右侧的diff弹出窗口。
可以按Tab
接受建议,要拒绝建议,只需继续键入,按Esc
拒绝建议。还可以在Cursor Settings中开启Partial accepts
,这就为Cursor Tab开启了部分接受,可以按⌘ →
一个词一个词的接受。
每次键入或光标移动,Cursor都将尝试根据最近的更改提出建议。但是,Cursor并不总是会显示建议,有时模型会预测到没有需要进行的更改。Cursor在上下文窗口中记录了最近的更改历史记录,因此它知道你接下来要做什么。
请将鼠标悬停在Cursor右下角状态栏上的“Cursor Tab”图标上,可以打开火关闭Cursor Tab功能。
Cursor Chat #
Cursor Chat,它是一款AI编码助手,可直接在编辑器中使用。能够在编辑器中使用强大的语言模型来询问问题或解决代码库中的问题。
语言模型为了给出更好的答案,它们需要知道与代码库相关的一些具体内容: 上下文。
Cursor具有多项内置功能,可在聊天中提供上下文,例如自动包含整个代码库中的上下文、搜索网络、索引文档以及用户指定的代码块引用。它们旨在消除使用语言模型处理代码时通常需要的繁琐的复制粘贴操作。
默认情况下,Cursor Chat位于AI面板中,该面板位于主侧边栏的另一侧。可以通过按⌘L
切换AI面板,该键在打开AI面板时时会将焦点聚焦到到Cursor Chat中。
用户和AI消息 #
用户消息包含你键入的文本,以及你引用的上下文。你可以返回到任何先前的用户消息以编辑和重新运行查询。这将覆盖其后的任何消息并重新生成新消息。
AI消息是选择的AI模型生成的响应。它们与之前的用户消息配对。AI消息可能包含已解析的代码块,可以立即应用添加到的代码库中。
所有用户/AI消息在同一thread(会话)中称为聊天会话(thread),每个聊天会话都保存在聊天记录中。
历史 #
通过历史记录访问之前的Composer会话和Chat会话。在历史记录中可以看到过去的Composer和聊天的列表,可以重新访问、重命名或删除它们。
当Chat获得焦点时,可以使用⌘+⌥+L
打开历史。
默认上下文 #
默认情况下,Cursor Chat将当前文件作为上下文。可以通过从消息中移除当前文件标签来提交查询,而不包含任何上下文。在键入时,可以在输入框上方的标签中看到将包含在上下文中的内容。
默认情况下,用户消息将包含键入的文本,以及引用的上下文。可以使用@添加更多自定义上下文,并且默认情况下,当前查看的文件也将用作用户消息中的上下文。
Chat中的AI Fix #
一个方便的功能是使用Chat中的 AI Fix来修复代码库中的linter错误。为此,将鼠标悬停在编辑器中的错误上,然后单击显示的蓝色AI修复按钮。
使用Codebase #
通过代码库索引(codebase indexing),Cursor Chat可以根据你的代码库准确生成响应。在Chat中输出消息并按⌘+Enter
,Cursor Chat 会扫描索引的代码库,以查找相关代码片段。这通常适用于快速包含要纳入对话上下文的代码片段。要更好地控制代码库搜索和提高准确性,可以使用@codebase
。
Cursor Apply #
Cursor的Apply允许我们快速将聊天中的代码块建议集成到我们的代码中。
应用代码块(Apply Blocks) #
要应用代码块建议,你可以按每个聊天代码块右上角的播放按钮(apply按钮)。
这将编辑我们的文件以合并Chat生成的代码。由于可以在Chat中添加最多的上下文并与模型进行多次的往返,因此建议使用Chat + Apply来进行更复杂的AI驱动的代码更改。
Accept或Reject #
应用代码块(Apply Blocks)后,还可以浏览差异并接受(Accept)或拒绝(Rject)更改。还可以单击聊天代码块右上角的“接受”或“拒绝”按钮。
Cursor Composer #
Composer是一个AI编码助手,它存在于你的编辑器中。它可以帮助你探索(exploration)代码、编写新功能,以及修改现有代码。使可以用⌘I
打开它。可以使用⌘N
创建一个新的Composer。
Agent模式 #
使用⌘I
打开Composer后,继续按⌘.
就可以获得一个可以自主处理你的代码的Agent(智能代理):
- 自动提取相关上下文
- 运行终端命令(只是给出命令)
- 创建和修改文件
- 语义搜索代码
- 执行文件操作
普通模式 #
普通模式提供用于代码探索(exploration)和生成的核心功能:
- 搜索你的代码(codese)和文档
- 使用网络搜索
- 创建和编写文件
- 访问扩展
@
符号命令
使用上下文 #
键入@
以查看基于当前工作的上下文选项。使用箭头键导航,使用Enter
键选择,并在@
后键入内容进行筛选。
文件选择 #
使用#
后跟文件名来关注特定文件。将其与@
符号结合使用,以实现精确的上下文控制。
上下文Pills #
聊天顶部的pill显示活动上下文。添加或移除pill以调整Composer所看到的内容。使用#
选择文件,然后它们会显示为pills。
生成和应用更改 #
当Composer建议更改时:
- 可以在diff视图中查看更改
- 使用提供的按钮接受(accept)或拒绝(reject)更改
- 如果需要,可以使用检查点(checkpoints)撤销
检查点(Checkpoints) #
每次生成代码时,Composer都会创建一个检查点。可以通过单击该检查点附近的checkout
返回到任何以前的版本。如果你不喜欢当前的更改并希望恢复到较早的状态,这会很方便。
历史 #
通过历史记录访问之前的Composer会话和Chat会话。在历史记录中可以看到过去的Composer和聊天的列表,可以重新访问、重命名或删除它们。
当Composer获得焦点时,可以使用⌘+⌥+L
打开历史。
上下文(Context) #
Codebase Indexing(代码库索引) #
通过为代码库(codebase)生成索引,以获得更好的AI驱动的代码理解。
为了使用@codebase
或⌘ Enter
获得更好、更准确的代码库答案,可以索引您的代码库。在后台,Cursor 会为代码库中的每个文件计算嵌入,并将使用这些嵌入来提高代码库答案的准确性。
代码库索引会自动与您最新的代码库更改同步。
可以在Cursor Settings
> Features
> Codebase Indexing
查看索引状态。
默认情况下,Cursor将索引代码库中的所有文件。
还可以展开Show Settings
部分以访问更多高级选项。在这里,除了.gitignore
设置外,还可以决定是否要为新存储库启用自动索引,并配置Cursor在存储库索引期间将忽略的文件。如果项目中包含AI绝对不需要读取的大型内容文件,忽略这些文件可以提高答案的准确性。
Rules for AI #
可以使用全局和特定于项目的规则自定义AI行为。
全局规则 #
可以在Cursor Settings
> General
> Rules for AI
下修改Rules for AI
部分,以向Cursor添加自定义说明。
此自定义指令将包含在Cursor Chat和⌘ K
等功能中。
特定项目规则(.cursorrules
)
#
对于特定于项目的说明,可以在项目的根目录中包含.cursorrules
文件。
@符号 #
本节将学习如何在Cursor的AI输入框中使用@符号。
在Cursor的AI输入框中,例如在⌘ K
、Chat 或Terminal ⌘ K
中,可以通过键入@
来使用@符号。将出现一个弹出菜单,其中包含一个建议列表,它将自动筛选,仅显示基于输入的最相关的建议。
可以使用向上/向下箭头键浏览建议列表。可以按Enter
选择建议。如果建议是类别,例如Files ,则建议将被过滤,仅显示该类别中最相关的项。
@Files #
在Cursor Chat和⌘ K
等功能的AI输入框中,可以使用@Files
引用整个文件。
为了确保引用的文件是正确文件,Cursor将显示该文件路径的预览。当在不同文件夹中有多个同名文件时,此功能特别有用。
Cursor Chat长文件引用
在Cursor Chat中,如果文件内容过长,Cursor会将文件分成更小的块,并根据与查询的相关性对它们重新排序。
⌘ K
的分块策略
对于⌘ K
Cursor 还会根据内容长度不同而以不同的方式使用文件引用:
- auto(自动)
- 根据文件大小自动选择三种阅读策略之一
- full file(完整文件)
- 整个文件用作上下文。
- outline(大纲)
- Cursor解析文件的大纲,并使用该信息作为上下文。
- chunks(块)
- 将文件分块为更小的块,并挑选最相关的块。
拖放
还可以将文件从主侧边栏拖放到Chat中或按⌘ K
将其作为上下文添加。
@Folders #
在Cursor Chat中将整个文件夹作为上下文进行引用。
目前, @Folders仅在Cursor Chat中被支持。
在Cursor中引用整个文件夹作为上下文。 @Folders
对于希望向AI提供大量长上下文聊天特别有用。
@Code #
在Cursor中引用特定代码部分。
代码预览
与@Files
类似,Cursor将显示代码内容的预览,以便可以验证引用的代码是否正确。
从编辑器添加
另一种添加代码片段作为上下文的方法是选择想要引用的代码,然后单击“Add to Chat”(Shift ⌘ L
)或“Add to Edit”( Shift ⌘ K
)。
@Docs #
Cursor带有一组已抓取、编入索引并可作为上下文使用的第三方文档。可以使用@Docs
符号访问它们。
添加自定义文档
如果要抓取和索引尚未提供的自定义文档,可以通过@Docs
> Add new doc
来实现。粘贴所需文档的URL后,将出现以下模式:
Cursor随后会索引并学习文档,将能够像使用任何其他文档一样将其用作上下文。如果想索引所有子页面和子目录,请确保在URL中添加尾部斜杠。
管理自定义文档
在Cursor Settings
> Features
> Docs
下,将看到已添加的文档。可以在此处编辑、删除或添加新文档。
@Git #
目前, @Git仅在Cursor Chat中被支持。
在Cursor Chat中,可以使用@Git
将git提交、差异或拉取请求(PR)添加到提示中。
常见用例
@Git
的一个常见用例是允许Cursor的AI 扫描diff并查找可能由diff引起的bug或问题。
还可以使用@Diff of Working State
从当前差异生成提交消息。
@Codebase #
在Cursor Chat 中使用高级代码库搜索。
通过@Codebase
,Cursor Chat遍历这些步骤,直到找到要使用的最重要的代码片段。
- 收集(Gathering):扫描你的代码库以查找重要的文件/代码块
- 重新排序(Reranking):根据与查询的相关性重新排序上下文项目
- 推理(Reasoning):思考使用上下文的计划
- 生成(Generating):生成响应
另一种提交高级代码库查询的方法是单击⌘ + Enter
按钮旁边的下拉菜单,然后为搜索行为选择reranker 。仅当不使用 @Codebase
时才可用,否则@Codebase
优先。
@Web #
借助@Web
,Cursor会根据提供的查询和上下文构建一个搜索查询,并搜索网络以查找相关信息作为额外的上下文
这对于允许Cursor查找最新的在线信息非常有用,或者允许Cursor在几秒钟内抓取多个网站以找到最佳答案,而无需用户手动搜索任何地方。
@Chat #
可以在⌘ K
中使用@Chat
将当前聊天信息添加为上下文。当与A 进行对话并希望将其应用于编辑或生成代码时,这非常有用。
@Definitions #
目前, @Definitions仅在⌘ K
中被支持。
@Definitions
符号将所有附近的定义添加到⌘ K
中作为上下文。
粘贴链接 #
为了让Cursor在响应之前访问链接,键入@
,然后粘贴链接。
移除链接
默认情况下,自动解析链接,并在Cursor Chat中将它们转换为@Links
。如果希望链接为纯文本,请点击链接,然后点击 Unlink。
忽略文件 #
.cursorignore
文件允许从Cursor的代码库(codebase)索引中排除文件和目录
要忽略文件不被包含在代码库索引中,可以在项目的根目录中使用.cursorignore
文件。它的工作方式与.gitignore
在git中的工作方式相同。
.cursorignore
尊重.gitignore
。如果已经拥有.gitignore
,则默认情况下将忽略这些文件。如果想忽略其他文件,可以将它们添加到.cursorignore
文件中。
可以在Cursor的安全页面上阅读有关此工作原理的更多信息。
Chat和Composer上下文 #
目前,Cursor Chat和Composer可以访问其上下文中所有文件,无论.cursorignore
设置如何。
可以在Cursor的安全页面上阅读如何处理AI请求的更多信息。
IDE Settings #
Cursor基于VS Code,因此有2个Settings,一个是VS Code Settings,一个是Cursor自己的Settings。
⌘ + Shift + P
输入VS Code Setting
⌘ + Shift + P
输入Cursor Settings
Cursor的Activity Bar默认水平放置,以节省聊天空间。如果想回到VS Code中的垂直风格,可以通过VS Code Settings中设置workbench.activityBar.orientation
为vertical
。
其实不管是Cursor Settings还是VSCode Settings都可以直接在VSCode的settings.json
文件中编辑。
模型 #
管理可在Cursor Chat、 ⌘ K
和 Terminal ⌘ K
中使用的模型的。
Agent在停止前最多可进行25次工具调用。目前,Agent仅支持Claude模型。
模型下拉菜单 #
在AI输入框下方,有一个下拉菜单,可让选择可以使用的模型。
Features设置 #
包含:
- Cursor Tab
- Chat & Composer
- Codebase indexing
- Docs
- Editor
- Terminal
生成Git Commit Message #
为git暂存区中的文件生成提交信息。