Post

Learning Cursor

Learning Cursor

Learning Cursor

Cursor:下一代AI驱动的编程工具

什么是Cursor

Cursor是一款革新性的AI驱动代码编辑器,它将传统的编程工具与最新的AI技术完美结合。

结合了AI的强大能力,Cursor能够理解整个项目上下文,生成更准确的代码,并支持多轮对话和上下文理解。

亮点:

  1. 支持apply, 直接将修改部分的内容应用到代码上。
    是因为它自己微调了一个模型,让 LLM 输出了 Git 那样的 diff fomat[3]。借助 diff format 它能够精确地修改相应地代码段。
  2. 支持多个文件或整个代码库。
    (按下 ctrl + enter)提取出相关内容作为向大模型询问的上下文,以获得更精确的回答

使用技巧

快捷键设置

  • 常用AI命令
    • Cmd/Ctrl + K:打开生成窗口
    • Cmd/Ctrl + L:打开对话框
    • Cmd/Ctrl + I:打开 Composer,
      Composer 是 Cursor 的特色功能,它的功能就是在一个对话窗口里同时对多个文件进行修改。
  • 自定义快捷键:可根据个人习惯自定义

常用命令

  • /explain:解释选中的代码
  • /test:生成单元测试
  • /optimize:优化代码性能
  • /docs:生成文档

便捷提供上下文信息的@

为了更方便地向大语言模型提供上下文信息,Cursor 内设了不同地 @ 注记,使用 @ 注记能够方便地注入不同类型的上下文信息到你的对话里。
@ 注记有一些是通用的,在所有对话窗口中都可以使用;有一些是特殊的,我会在提到时做补充说明。

  1. @Files,传递指定代码文件的上下文 当你在对话框输入 @Files 时,Cursor 会自动弹出对你代码仓库的检索列表,你可以输入你想要导入上下文的文件名,而后按下确认键,相应的文件里的内容便会届时自动注入到上下文中
  2. @Code,传递指定代码块的上下文 Code 提供更精确的代码片段,@ 的使用都大同小异,会弹出相应的检索框,你输入关键词后在索引列表中选择相应的代码块即可。代码块的识别是由你开发环境的 LSP 决定的,大多数情况下都是精确的:
  3. @Docs,从函数或库的官方文档里获取上下文
  4. @Web,从搜索引擎的搜索内容获取上下文 @Web 类似于一种方法,它会默认将你的提问先向搜索引擎进行搜索,然后从搜索结果里提取上下文喂给 LLM。但因为 Cursor 官方没公开透明具体的实现法子,它自个也没调好,实际上使用效果忽好忽差的。
  5. @Folders,传递文件目录信息的上下文 @Folders 能够提供文件目录的相关信息,如果你遇到什么路径问题,可以考虑使用这个向大模型寻求解决方法
  6. @Chat,只能在文件内的代码生成窗口里使用的 @Chat 只能在文件内的代码生成窗口(CTRL + K 打开的窗口)里使用,它能够将你右边打开的对话窗口里的对话内容作为上下文传递给大模型
  7. @Definitions,只能在文件内的代码生成窗口里使用的 和 @Chat 一样,@Definitions 只能在文件内的代码生成窗口里使用。它会将你光标停留的那一行代码里涉及到的变量、类型的相关定义作为上下文传递给大模型,类似于 @Code。
  8. @Git,只能在对话窗里使用 对话窗指的是通过 CTRL + L 与 CTRL + I 打开的对话窗口。@Git 能够将你当前的 Git 仓库的 commit 历史作为上下文传递给大模型。感觉比较适合在代码协作的时候查战犯清算的时候使用。
  9. @Codebase,只能在对话窗里使用,用于在代码仓里扫描相应的文件传入 Codebase 实际不是很好用,与其说它是扫代码仓,不如说是从代码仓里寻找到你想要的文件的上下文传入,也就是 CodebaseFilter 。

Reference

This post is licensed under CC BY 4.0 by the author.