Cursor 指南
Cursor 作为当下最受欢迎的 AI 代码编辑器,凭借其强大的辅助编程能力和流畅的用户体验,正在受到越来越多开发者的青睐。
可以毫不夸张的说,Cursor 正在重新定义编程的游戏规则。
本文将详细介绍 Cursor 的常用功能,如果你还没有全部体验过,不妨在读完本文后亲自试试。
Tab
编程的未来,也许就是 Tab、Tab、Tab。
使用 Cursor 时,Tab 将会是你最常用的按键,接下来展示的各种功能都只需要一个 Tab 就能完成。
自动续写
Cursor 能在你编写代码时理解你的意图,并通过强大的自动补全功能预测你的下一步代码并提供智能建议,就像有一位程序高手在与你结对编程。
多行编辑
Cursor 可以同时建议多行编辑,这不仅是为了节省键击次数,更是为了让你保持专注。
智能重写
我们都有手指跟不上大脑的时候,打字错误会经常发生。Cursor 能及时发现并修复你的错误,就像一个智能拼写检查器。
光标预测
Cursor 拥有光标预测的功能,它能准确预测出你接下来要编辑的位置,并为你提供智能建议,这看起来简直科幻。
仅一个 Tab 就拥有了如此多的功能,但我需要告诉你的是,这只是一个开始。接下来我们再看另一个改变游戏规则的因素:⌘ K。
⌘ K
如果 Tab 是你的编程伙伴,那么 ⌘ K 就是你的编程向导。此快捷键能让你快速掌握 AI 辅助编程的功能。
按需生成代码
编写复杂的函数,不知道从哪里开始?⌘ K 可以帮你。你只需要描述出想要编写的功能,然后 Cursor 就能帮你快速生成代码。
快速重构代码
还记得上次重构代码的时候吗?你可能花了不少时间。现在,使用 ⌘ K,就能轻松搞定!你只需要选中代码,按下快捷键,然后描述修改需求,剩下的就交给它处理。
代码解读
想快速弄清一段代码的工作原理? ⌘ K 也能帮你,选择任意一段代码,按下快捷键,提出问题,然后就能得到上下文相关的回答。
Terminal
Cursor 的 AI 功能不仅限于编辑区,还能延伸到终端。让你不再需要疯狂的搜索命令语法。
打开终端,按下 ⌘ K,接着输入你想要执行的操作,Cursor 会自动为你生成正确的命令。
Chat
语言大模型的出现,改变了我们获取信息的方式。如今,遇到问题时,不再需要辗转于各类搜索引擎寻找答案,只需要与智能模型对话,便能快速获得精准、个性化的回应。
Cursor 默认集成了多种主流大语言模型,在 Cursor Setting 中你可以找到当前可用的模型。
使用 ⌘ L 快捷键就能打开 Cursor 的聊天对话面板,在其中你可以根据需求灵活切换不同模型。
除此之外,Cursor 还增强了聊天对话的交互行为,使其更加契合编程场景。
上下文感知对话
Cursor 能够感知你当前的文件位置,就像一位编程高手实时观察着你的屏幕。当你遇到一段不确定功能的代码时,只需要提问:“这里有错误吗?” 它便能根据你的代码给出相应的解答。
一键应用代码
在聊天窗口中看到满意的建议?只需一键,就能直接将其添加到你的代码中,无需繁琐的复制粘贴。
图像识别
有时你可能难以用语言完整描述需求,别担心!使用 Cursor 的聊天功能时,你可以直接将图像加入对话,它能准确的理解并响应你的意图。
Context
Cursor 的上下文功能是其区别于其他 AI 编辑器的独特优势。它不仅能识别你当前编辑的文件,还能全方位理解你的整个代码库。这种全面的洞察力为 Cursor 的多项功能提供了支持,从而为你提供更高效的帮助。
@
Cursor 使用 @ 符作为与 AI 交互时引用上下文的工具。无论你使用 ⌘ K 还是 Chat,只需输入 @,即可快速引入相关内容。
例如,我们可以粘贴引入一个网页链接,让 Cursor 协助阅读网页内容。
或者,让它 review 代码提交记录。
甚至,直接从网络上搜索信息。
Cursor 的上下文功能都能准确地理解和生成与上下文高度相关的内容。
Docs
如果你想让 Cursor 根据特定的文档生成内容,可以使用 @Docs 功能,Cursor 默认内置了多组文档模板。
此外,Cursor 还支持添加自定义文档,它能自动提取链接中的内容并纳入索引。我们可以在 Cursor Setting 中找到添加文档的选项。
添加文档时需要注意,若想索引整个站点的页面,则必须在 URL 中添加根路径进行访问。
需要注意的是,Docs 和 Link 都可以实现抓取网页以生成内容,但 Docs 更适合基于项目添加固定文档,而对于临时引入的网页,则更推荐使用 Link。
Notepads
有时,我们需要将冗长的描述指令、代码片段或项目规范作为多次与 AI 交互的共享上下文反复使用。Cursor 的 Notepads 功能提供了一个便捷的笔记空间,方便随时记录这些内容并灵活调用。
在侧边栏中,可以找到 Notepads 面板。在这里,你可以创建任意多条笔记。
之后与 AI 交互时,就可以使用 @Notepads 来引入笔记。
Notepads 非常适合记录以下内容:
- 开发指南和标准。
- 可重复使用的代码模板。
- 需要经常参考的文档。
但以下信息不建议记录在 Notepads 中:
- 敏感数据或凭证。
- 高度不稳定且频繁变化的信息。
最后,我们总结一下在 Cursor 中常用的几种上下文类型:
- @Files & Folders:引入文件或目录。
- @Code:引入代码片段。
- @Docs:引入预先索引的第三方文档或自定义文档。
- @Git:引入 Git Commit、Diffs 或 Pull Request。
- @Web:使用网络搜索相关信息。
- @Cursor Rules:引用项目规则。
- @Notepads:引入笔记。
- @Linter Errors:引入代码 Lint 错误。
- @Recent Changes:引入最近修改的代码。
- @Past Chats:引入最近聊天记录。
限制索引范围
默认情况下,Cursor 会自动将项目中的文件发送至远程服务器进行向量索引。不过 Cursor 会遵循 .gitignore 文件的规则,定义其中的文件将不会被上传至服务器(但 Cursor 并不保证完全不会上传)。
如果项目中不存在 .gitignore 文件,也可以创建 .cursorignore 文件来指定忽略规则(其语法与 .gitignore 相似),被忽略的文件将不能被 AI 索引,或者作为上下文添加。
Agent
你是否曾想过,只需用一句话描述想要实现的功能,AI 就能自动生成完整的代码应用?如今,这一切已不再是遥不可及的幻想,Cursor Agent 将这一愿景变为现实。
无论你是需要快速制作原型、构建概念验证(Proof of Concept),还是打造现有应用程序的克隆版本,Cursor Agent 都能在短短几分钟内帮你完成。
使用 ⌘ I 快捷键就能以 Agent 模式打开聊天对话面板,输入你希望实现的功能描述,接下来只需要等待 Cursor Agent 自动为你完成代码生成。
例如,我们可以让 Cursor 编写一个基于 HTML、CSS 和 JavaScript 开发的井字棋游戏。
通过上面的示例我们可以看到,Cursor Agent 具有以下特点:
- 自主规划:Agent 会根据需求自动规划所需的文件结构和代码架构。
- 多文件协作:能同时创建和管理多个相关联的文件。
- 交互式开发:在代码生成过程中,你可以随时介入并调整方向。
Agent 并不是简单的代码生成器,而是一个能够理解需求、规划方案、执行任务的智能助手。它能极大的提高原型开发和概念验证的效率,但在生产环境中使用其生成的代码时,仍然需要开发者进行细致的代码审查和必要的优化。
Check Point
在 Agent 模式下,Cursor 会一次性修改大量代码或文件。我们可以在修改后,先运行代码预览效果,再决定是否应用这些变更。
对于已应用的代码更改,你可以点击 Restore checkpoint 进行撤销。撤销后,若需要恢复,可以点击 Redo checkpoint 重做。
Agent 和 Chat 都可以进行聊天问答,但若希望自动生成代码并创建文件,推荐使用 Agent 模式,仅需提问获取解答时,Chat 模式更合适。
Rules
每位开发人员都会有独特的编码风格,Cursor 支持将你的个人风格融入 AI 行为。你可以通过 Rules 功能将风格添加到 Cursor 中,之后 AI 在交互时会尽量遵循你的风格。
在 Cursor Setting 中我们可以添加全局 Rules。
例如,添加一个 Rule 让 Cursor 对我的所有提问都用中文回答。
也可以在项目中创建 .cursor/rules 目录,并通过 .mdc 文件添加基于项目的 Rules。之后在与 AI 交互时,Cursor 会自动加载该目录下的所有 Rule。
Cursor 对 Rule 的内容并没有强制要求,也就是说你可以完全自由的编写。但一份项目 Rule 应尽量涵盖以下内容:
- 项目信息
- 技术方案
- 目录结构
- 编码规范
如果想要学习优秀的 Rule 编写规则,Cursor.directory 这个网站提供了多种主流语言和框架的 Rule 模板可供参考。
MCP
MCP,全称 Model Context Protocol(模型上下文协议),由 Claude 母公司 Anthropic 提出,是一种标准化协议。目的是让 AI 应用可以更好地连接各种外部数据服务,进一步增强 AI 应用的功能。
总体而言类似于大模型领域的 HTTP 协议。
- HTTP 协议:标准化浏览器与服务器的交互。
- MCP 协议:标准化大模型与外部服务的交互。
需要注意的是,MCP 并不绑定任何大模型,这意味着你必须在支持 MCP 的应用中才能使用。目前,Cursor 已经支持了 MCP。你可以在 Smithery 这个网站上找到众多开源 MCP 服务,然后根据需要安装适合的服务。
在 Cursor Setting 中我们可以添加全局 MCP 服务。
例如,添加一个 MCP 服务,让 Cursor 在回答问题时采用思维链的方式进行推理和响应。
首先,我们需要在 Smithery 上找到 Sequential Thinking 这个 MCP 服务,并仔细阅读安装步骤,最新版本的 Cursor 推荐以 JSON 格式进行安装。
接着,将 JSON 写入到你的 MCP 配置中。
当前,MCP 服务仅在 Agent 模式下可用。我们可以在聊天时输入关键词(关键词通常显示在 MCP 的 Tools 信息一栏),触发 Cursor 调用相应的 MCP 服务。例如,触发思维链的关键词是 sequentialthinking。
我们也可以为项目定制专属的 MCP 服务。只需在项目中创建 .cursor 目录,并在其中添加 mcp.json 文件来配置所需的服务。之后在与 AI 交互时,Cursor 会自动加载该文件中的所有 MCP 服务。
MCP 的诞生让 AI 应用有了无限可能。这里仅展示了最基础的一个 MCP 服务,更多复杂且强大的功能,等待你自行探索。
问答技巧
在使用问答式 AI 时,我们经常会遇到这样的问题:向 AI 发出指令后,它的回答却牛头不对马嘴,甚至完全偏离预期。那么,我们要如何才能避免或减少问题的出现?
首先,我们需要明白问题根源。这种情况通常是因为指令描述中某些词语表达不够明确,导致 AI 误解了意图,从而给出错误的回应。
因此,向问答式 AI 提供全面且清晰的表达至关重要。
以下几种技巧可以一定程度上避免该问题的出现:
复述问题指令
向 AI 提出问题时,可以要求 AI 先复述我们的问题再作答。这样做的好处是能够确认 AI 是否准确理解了我们的意图。
例如,我们可以这样对 AI 提问:
基于 HTML、CSS、JavaScript,帮我实现一个两人对战的井字棋游戏。
请你先复述一遍我的需求再进行答复,让我确认你真的理解了我的需求。
基于 HTML、CSS、JavaScript,帮我实现一个两人对战的井字棋游戏。
请你先复述一遍我的需求再进行答复,让我确认你真的理解了我的需求。
明确需求范围
向 AI 提出问题时,应尽量让需求指令足够简明、单一化,不要让 AI 猜你想要做什么,要有足够的针对性,并且要明确这次指令的范围,最大程度上缩小指令的辐射范围。
提出问题我们可以携带上相关的代码或者文件,并且告诉 AI 要在什么范围内做修改,这样 AI 的回答会准确很多,并且不会影响到一些不该修改的地方。
例如,我们可以这样对 AI 提问:
基于 TypeScript,帮我实现一个节流函数,
你可以在 @src 目录下的 @utils.ts 文件中编写代码。
基于 TypeScript,帮我实现一个节流函数,
你可以在 @src 目录下的 @utils.ts 文件中编写代码。
将 AI 当作孩童
虽然 AI 在知识领域上非常强大,但在沟通理解上仍处于孩童的水平,尤其是在中文语境下,要让 AI 达到成年人的理解能力并不容易。因此,在与 AI 沟通时,我们应尽可能地逻辑清晰,描述问题时要加以引导,同时我们可以将自己的思路一并发送给 AI,必要时也可以提供一些示例作为参考。这样的表达方式会让 AI 尽可能地接近你想要的结果。
在与 AI 对话的过程中,也是在锻炼我们解决问题的思路。通过不断尝试与 AI 对话,我们也能学到更清晰的需求表达能力。
结语
通过本文的介绍,相信你已经对 Cursor 的主要功能有了全面的了解。从智能的 Tab 补全到强大的 ⌘ K 功能,从上下文感知的 Chat 到自主规划的 Agent,从到灵活的 Rules 配置,再到面向未来的 MCP,Cursor 为我们提供了一个强大而智能的编程环境。
记住,AI 辅助编程工具的价值不在于完全替代人工编码,而在于提升我们的开发效率,让我们能够将更多精力投入到真正需要创造力的工作中。希望你能善用这些工具,在编程的道路上走得更远。
# Tools
cd ..