Cursor使用学习(实现俄罗斯方块)

简介:

Cursor - The AI Code Editor(官网)

Cursor 是一款真正意义上的 AI 编辑器。

Cursor 基于 VSCode 开发的,大多数其他编程工具都是 VSCode 的插件。因此,Cursor 能创造性地构建一个高效的人机协作编程环境。

入门教程:

Cursor入门教程1 - Tab功能的使用 | cursor101.com

根据当前的代码上下文,自动生成代码补全的建议,用户直接通过Tab键就可以完成代码的修改与补全。

Cursor最强的优势在于它的代码编辑能力,不仅可以插入代码,而且可以对现有的代码进行修改。

Tap功能使用:

多行补全

最基础的功能就是代码生成,直接根据当前光标所在的位置,生成代码补全建议。Cursor的Tab功能支持多行编辑,可直接生成多行代码补全建议。Tab功能会根据你当前光标处的修改去生成多行代码补全建议。

智能重写(Smart Rewrite)

Cursor的Tab功能可以聪明地改写你已经写好的代码。

光标预测(Cursor Prediction)

上面介绍的功能都是Cursor基于当前光标的位置,再结合代码的上下文,进行补全或修改提示;但Cursor还能预测你下一步可能要编辑的位置。

技巧

  • Cursor的Tab功能不仅限于主编辑窗口,在"Go to Definition"或"Go to Type Definition"的预览窗口中也可以使用。这个特性在添加新的函数参数时特别有用。

eg:当你需要修改一个函数定义,然后快速修复所有使用该函数的地方时,这个功能就非常方便。

这个功能可以提高代码重构的效率,使得添加新功能或修改现有接口变得更加简单和快速。

  • Ctrl/⌘和右箭头来接受建议的下一个单词。

提示栏--⌘+K

Tab功能是AI辅助编码的最直接形式(直接生成代码),那么提示栏(Cmd K)就是用户需要引导AI怎么做的最快速方式

⌘ K 可让您使用 AI 编辑和编写代码。要编辑,请尝试选择一些代码,单击“编辑”,然后描述应如何更改代码。要生成全新的代码,只需键入 ⌘ K 而不选择任何内容。

与聊天功能(Cmd L)不同的是,提示栏(Cmd K)主要负责用来生成或修改局部的代码, 而聊天功能(Cmd L)是用来针对更宽泛的代码问题进行对话的,更好的支持多轮的对话,可以针对更宽泛的编程问题进行解答。

Cursor 中的提示栏分为两个类型:

  • 代码编辑提示栏: 在代码框中使用,主要是用来补充或编辑代码。
  • 终端提示栏: 在终端框中使用,主要是用来生成终端中的命令。

代码编辑提示栏

在代码编辑框中,按下⌘+K就会弹出提示栏;

使用的上下文信息

上下文信息的有效性决定了生成的代码质量。

在代码编辑的提示栏使用时,Cursor会自动尝试找到有用的信息来改善代码生成,除了你手动包含的@符号外。还会有这些额外的上下文:

  • 与你当前编辑的代码相关的文件
  • 最近查看的文件

Cursor会根据与你的编辑/生成的相关性对上下文项进行排序,并保留最相关的项目作为大型语言模型的上下文。

内联生成

如果在按下Cmd K没有选中任何代码,Cursor将根据你在提示栏中输入的内容生成新代码。

内联编辑

如果按下Cmd K选中某段代码,Cursor将根据你在提示栏中输入的内容修改选中的代码。

终端提示栏

在Cursor的内置终端中,你可以按下Cmd K(在Windows/Linux上是Ctrl K)来打开终端底部的提示栏。

  1. 在提示栏里,用简单的话说说你想在终端里做什么。
  2. Cursor 会根据你的描述,自动帮你写出一个终端命令。
  3. 如果你觉得这个命令可以用:
    • 按一下 Esc 键,命令就会出现在终端里,但还不会执行。
    • 如果你想立即执行这个命令,就按 Cmd + Enter

使用的上下文信息

终端Cmd K默认会考虑以下上下文:

  • 终端里面最近的历史记录
  • 提示栏中的任何其他内容

技巧

后续指示

在使用AI生成代码或回答时,我们经常会发现第一次的结果不够完美。这就是为什么我们需要"后续指示"这个功能。它就像是在和AI对话一样,让你可以一步步引导AI,直到得到你想要的结果。

比如说,AI第一次生成的代码可能有点问题,你可以直接在提示栏里说"这个函数需要添加错误处理"。然后按下Enter,AI就会根据你的新指示修改代码。你不需要重新开始整个过程,而是可以在原有的基础上继续改进。

快速回答

有时候,我们可能需要快速了解某段代码的功能或获取一些简单的信息,但又不想立即生成或修改代码。这就是快速回答功能的用武之地。

如果你在提示栏中按Option/Alt Enter,Cursor会立即回答你关于选中内容和相关上下文的任何问题(而不会生成或修改代码)。

这个功能特别有用,因为:

  1. 它能快速解答你的疑问,帮你更好地理解代码。
  2. 你不需要切换到聊天窗口,可以直接在编辑器中获得答案。
  3. 这个对话的内容会被记住,所以你可以在后续的操作中利用这些信息。

快速生成 git commit message

你可以使用终端提示栏快速生成git commit消息。

步骤:

  1. 在终端中,输入‘git diff | cat’,获取最近的修改。
  2. 然后输入‘git add .’,把所有修改添加到暂存区。
  3. 按下Cmd K,在提示栏中输入‘git commit message’, Cursor会给你生成一个git commit命令并带有生成的commit message。
  4. 直接按 Cmd + Enter 执行命令,整个过程一气呵成。

总结

通过使用提示栏(Cmd K)功能,你可以快速生成和修改代码,生成git commit message,甚至可以快速回答关于代码的简单问题。这些功能可以帮助你更高效地编写代码,节省时间,提高工作效率。

Chat(Cmd+L)

适合以下的场景:

  1. 解答编程概念问题,学习新技术或框架
  2. 获取代码建议和最佳实践
  3. 调试和错误排查

Cursor 的 Chat 功能提供了最灵活的编程辅助能力,额外提供了:

  • 基于@的上下文快速引用能力
  • 代码修改的 Apply 能力

Apply

Apply 能力让聊天功能(Cmd+L)具有了代码修改的能力,但是如果有明确的代码修改需求,其实更推荐使用专门为代码修改设计的功能:

  1. 提示栏(Cmd+K): 擅长局部代码的修改能力
  2. Composer: 擅长全局跨文件的修改能力

基于 @ 的上下文引用

Cursor 入门教程3 - 使用 Chat(Cmd L)功能解决通用问题 | cursor101.com

启用Agent模式

Cursor效率之道:Agent模式+7大高级技巧详解_cursor rules for ai-优快云博客

启用Agent模式非常简单,只需使用快捷键 ⌘.(Mac)或 Ctrl + .(Windows/Linux),即可激活Agent功能。在Agent模式下,你可以通过命令行或快捷键执行以下操作:

上下文管理:通过@命令快速调整AI的关注范围。

终端操作:直接在编辑器中输入命令,Agent会自动执行。

文件交互:通过命令快速创建、修改或删除文件。

或者直接在Composer右下角点击agent按钮,也可以启用Agent模式,如下图所示:

使用场景

如果是一般的聊天交互,比如你想让Cursor帮你修改某个文件,那么Normal模式就可以完成,不需要启用Agent模式。

如果需要Cursor独立的去完成一项相对复杂的任务,那么Agent模式可以做的事情非常多,以下是一些常见的使用场景:

代码重构:当需要对某个模块进行重构时,Agent会根据代码库上下文提供优化建议,并自动生成替代代码。

错误修复:当代码出现错误时,Agent不仅会标注问题,还会提供详细的修复建议,并自动修复。

自动化任务:通过Agent,可以实现文件批量操作、脚本生成等自动化任务,大幅提升效率。

代码生成:通过Agent,可以实现代码生成,比如生成一个完整的项目。

版本控制与检查点

Cursor内置了强大的版本控制功能,每次生成代码或修改文件时,都会自动创建一个检查点(Checkpoint)。

使用方法:

回滚代码:如果对当前修改不满意,可以随时回滚到之前的版本。

如下图所示,如果对修改不满意,可以点击restore恢复到修改之前的状态。

优势:

在尝试新功能或大规模重构时,检查点功能可以作为“后悔药”,确保代码安全。

方便团队协作时追踪代码变更。

文档生成与管理:提升项目可维护性

Cursor不仅可以生成代码,还可以自动生成项目文档,包括函数说明、使用指南等。

实用技巧:

从一开始就写Readme:在创建项目时,让Cursor生成详细的Readme文件,明确项目目标和功能。

代码注释:要求Cursor在生成代码时自动添加清晰的注释,提升代码的可读性。

示例:

在项目初期,输入指令“生成项目的Readme文件”,Cursor会根据代码库内容生成一份详细的文档,包括功能描述、使用方法和依赖项说明。然后再随后的任务中,Cursor会根据代码库内容自动更新Readme文件。

Rules for AI:自定义AI行为

Cursor允许开发者通过 Rules for AI 功能自定义AI的行为,使其更符合个人或团队的开发需求。这一功能可以在Cursor的设置中找到;(路径为:Settings > General > Rules for AI)

使用方法:

打开设置:在Cursor中,导航到 Settings > General > Rules for AI。

添加规则:在规则编辑框中输入自定义规则,例如要求AI优先生成某种语言的代码或遵循某种设计模式。

保存并应用:完成规则配置后,点击保存,AI将根据新规则调整行为。

常见应用场景:

编码规范:要求AI遵循特定的代码风格或团队的命名约定。

技术栈偏好:优先生成与项目技术栈匹配的代码,例如Python或JavaScript。

性能优化:让AI生成更高效的算法或代码实现。

示例规则:
- 优先生成Python代码
- 使用中文回复
- 在代码中添加详细注释
- 使用Windows的命令行命令

自定义AI规则:个性化你的Cursor

Rules for AI是针对整个Cursor的设置,所以类似System Prompt,Cursor还支持通过.cursorrules文件进一步自定义AI的项目行为,开发者可以根据个人习惯和项目需求调整AI的工作方式。

cursor.directory(https://cursor.directory) 的网站里收集了不少Cursor的自定义规则,方便大家参考,不用重复造轮子。

实用场景:
  • 针对特定项目(如后端API开发或机器学习模型训练),定义专属的AI行为规则。
  • 在团队协作中,确保AI生成的代码符合团队的编码规范。

Cursor使用过程记录

灵感起源:

"放开那代码让我来!"——Cursor帮你写代码的奇妙之旅 - Sunzz - 博客园

使用cursor实现俄罗斯方块小游戏:

https://segmentfault.com/a/1190000045680817(教程不好用)

(刚开始按照教程试了三四次都不能运行,最后搜索原因多次尝试终于可以运行了!)

基础版--V1.0

使用java帮我编写一个简单的俄罗斯方块小游戏

这个俄罗斯方块游戏包含以下功能

  1. 基本的游戏界面显示
  2. 方块的移动(左右方向键)和旋转(上方向键)
  3. 自动下落(可以用下方向键加速)
  4. 碰撞检测
  5. 消行功能
  6. 游戏结束判定

使用方法

  1. 创建这两个Java文件并保存
  2. 编译并运行Tetris类
  3. 使用方向键控制:
  • 左右方向键:移动方块
  • 上方向键:旋转方块
  • 下方向键:加速下落

游戏控制说明:

  • 方块会自动下落
  • 当方块无法继续下落时,会固定在当前位置
  • 当一行被填满时,该行会被消除
  • 当新的方块无法放置时,游戏结束

这是一个基础版本的俄罗斯方块,你可以根据需要添加更多功能,比如:

  • 计分系统
  • 级别系统(随着分数提高,方块下落速度加快)
  • 预览下一个方块
  • 暂停功能
  • 背景音乐
  • 更好的视觉效果

进阶版--V2.0

帮我添加预览下一个方块的功能,并设计积分系统和倒计时60s自动结束游戏

这些修改添加了以下功能:

  1. 预览下一个方块:
  • 在游戏主区域右侧显示预览窗口
  • 显示下一个将出现的方块形状
  1. 积分系统:
  • 一次消除1行:100分
  • 一次消除2行:200分
  • 一次消除3行:400分
  • 一次消除4行:800分
  • 分数会实时显示在预览窗口下方
  1. 倒计时系统:
  • 游戏开始时有60秒倒计时
  • 时间显示在得分下方
  • 时间到达0时游戏结束
  1. 改进的游戏结束显示:
  • 居中显示"游戏结束"文字
  • 显示最终得分
  • 游戏可以因为两种情况结束:时间耗尽或方块堆到顶部

5. 调整了窗口大小以适应新增的预览区域

使用方法和之前一样,但现在你可以:

  • 在右侧预览窗口中看到下一个方块的形状
  • 查看当前得分
  • 关注剩余时间
  • 争取在时间结束前获得最高分

这些新功能让游戏更具挑战性和趣味性。玩家需要在有限的时间内尽可能多地消除行数来获得高分。

终极版--V 3.0

帮我把不同的方块形状设计为显示不同的颜色

这些修改实现了以下功能:

  1. 每种形状都有固定的颜色:
  • I形:青色
  • O形:黄色
  • T形:品红色
  • L形:橙色
  • J形:蓝色
  • S形:绿色
  • Z形:红色
  1. 方块在放置到底部后会保持其原有颜色
  2. 预览窗口中的下一个方块也会显示对应的颜色
  3. 消除行时会正确处理颜色信息

这样的改动会让游戏看起来更加丰富多彩,也更容易区分不同的方块形状。每种形状都有其独特的颜色标识,使游戏更加直观和有趣。

最终效果展示:

过程实现记录

经过几天对Cursor的使用,可以明显感受到它的功能很强大,可以很好的输出你想要的内容,语句之间的关联很强,可以智能的结合上下文,Composer确实非常的好用;

### 如何将与 `cursor` 相关的更改推送到 Git 存储库 要将与 `cursor` 相关的更改推送到 Git 仓库,需遵循标准的 Git 工作流程。以下是具体操作方法: #### 1. 添加文件到暂存区 在修改了涉及 `cursor` 的代码之后,需要先将其添加到 Git 的暂存区。这可以通过以下命令完成: ```bash git add <file_name> ``` 如果整个项目都进行了更新,则可以使用以下命令一次性添加所有更改: ```bash git add . ``` 此步骤会告诉 Git 哪些文件中的更改应该被纳入下一次提交。 #### 2. 提交更改至本地存储库 一旦文件已成功添加到暂存区,下一步就是创建一个新的提交记录来保存这些更改。通过提供有意义的消息描述此次变更的内容,有助于团队成员理解每次提交的目的。 ```bash git commit -m "Update SQL execution logic with cursor" ``` 上述例子中,“Update SQL execution logic with cursor” 是一条清晰明了的信息,表明这次提交主要是关于改进或者新增加了有关于数据库游标的执行逻辑[^3]。 #### 3. 推送更改到远程存储库 最后一步是把本地所做的提交同步给远端服务器上的分支。假设目标分支名为 main 或 master ,那么推送过程如下所示: ```bash git push origin main ``` 如果是其他名称的目标分支,请替换掉这里的 “main”。 注意,在某些情况下可能还需要解决冲突等问题才能顺利完成推送动作;另外当存在未跟踪的新文件时也需要单独处理它们后再继续以上流程[^1]。 #### 总结 综上所述,对于像 `cursor.execute()` 这样的 Python 数据库交互语句或者其他任何类型的源码变动而言,只要按照常规方式管理版本即可实现有效追踪其历史演变情况并分享成果给协作伙伴们知晓[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值