####################################
Tutorial 3: Cursor 命令与快捷键
####################################
.. include:: ../links.ref
.. include:: ../tags.ref
.. include:: ../abbrs.ref
============ ==========================
**Abstract** Cursor 的核心命令和快捷键
**Authors** Walter Fan
**Status** WIP
**Updated** |date|
============ ==========================
.. contents::
:local:
Cursor 核心功能
===============
Cursor 提供了三种主要的 AI 交互方式:
.. code-block:: text
Cursor AI 交互方式
┌─────────────────────────────────────────────────────────────────┐
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ Chat │ │ Inline Edit │ │ Composer │ │
│ │ Cmd+L │ │ Cmd+K │ │ Cmd+I │ │
│ ├─────────────┤ ├─────────────┤ ├─────────────┤ │
│ │ • 对话式 │ │ • 代码内 │ │ • 多文件 │ │
│ │ • 问答 │ │ • 快速修改 │ │ • 大型任务 │ │
│ │ • 解释代码 │ │ • 重构 │ │ • 新功能 │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
Chat (Cmd+L)
============
Chat 是最基本的 AI 交互方式,适合问答、解释、讨论。
打开 Chat
---------
- **快捷键**: ``Cmd+L`` (Mac) / ``Ctrl+L`` (Windows/Linux)
- **或者**: 点击侧边栏的聊天图标
Chat 的基本用法
---------------
**1. 简单问答**
::
什么是 Python 的装饰器?
**2. 解释代码**
选中代码后按 ``Cmd+L``,代码会自动添加到上下文::
请解释这段代码的作用
**3. 代码生成**
::
帮我写一个 Python 函数,实现:
- 读取 CSV 文件
- 过滤掉空行
- 按指定列排序
- 输出到新文件
@ 符号引用
----------
Chat 支持使用 ``@`` 引用各种上下文:
.. list-table::
:header-rows: 1
:widths: 20 40 40
* - 引用类型
- 语法
- 说明
* - 文件
- ``@filename.py``
- 引用整个文件
* - 文件夹
- ``@folder/``
- 引用文件夹下所有文件
* - 符号
- ``@symbolName``
- 引用函数、类等
* - 代码库
- ``@codebase``
- 搜索整个代码库
* - 文档
- ``@docs``
- 引用文档
* - Web
- ``@web``
- 搜索网络
* - Git
- ``@git``
- 引用 Git 历史
**示例**::
@main.py @utils.py
这两个文件中有重复的代码,请帮我重构
@codebase
项目中哪里使用了 Redis?
@web
Python 3.12 有什么新特性?
Chat 模式
---------
Chat 有不同的模式,可以通过下拉菜单切换:
- **Normal**: 普通对话模式
- **Long Context**: 支持更长的上下文
- **Agent**: AI 可以自主执行任务(运行命令、创建文件等)
Inline Edit (Cmd+K)
===================
Inline Edit 是在代码中直接进行修改的方式,非常高效。
打开 Inline Edit
----------------
1. 将光标放在要修改的位置
2. 按 ``Cmd+K`` (Mac) / ``Ctrl+K`` (Windows/Linux)
3. 输入指令
4. 按 Enter 执行
基本用法
--------
**1. 生成代码**
在空行按 ``Cmd+K``::
写一个快速排序函数
**2. 修改代码**
选中代码后按 ``Cmd+K``::
添加错误处理
**3. 重构代码**
选中代码后按 ``Cmd+K``::
使用列表推导式重写
实用示例
--------
**添加文档字符串**
选中函数,按 ``Cmd+K``::
添加 docstring
**添加类型注解**
::
添加类型注解
**优化性能**
::
优化这段代码的性能
**修复 Bug**
::
修复这个 bug:当输入为空时会报错
快捷操作
--------
在 Inline Edit 中:
- **Enter**: 执行
- **Esc**: 取消
- **Tab**: 接受建议
- **Cmd+Enter**: 在新文件中生成
Composer (Cmd+I)
================
Composer 是 Cursor 最强大的功能,支持多文件编辑和复杂任务。
打开 Composer
-------------
- **快捷键**: ``Cmd+I`` (Mac) / ``Ctrl+I`` (Windows/Linux)
- **或者**: 点击右下角的 Composer 按钮
Composer vs Chat
----------------
.. list-table::
:header-rows: 1
:widths: 25 35 40
* - 特性
- Chat
- Composer
* - 文件编辑
- 单文件
- 多文件
* - 创建文件
- 需手动
- 自动创建
* - 执行命令
- 不支持
- 支持(Agent 模式)
* - 适用场景
- 问答、解释
- 开发新功能、重构
Composer 模式
-------------
**1. Normal 模式**
普通的多文件编辑::
创建一个 Flask API,包含:
- app.py: 主应用
- models.py: 数据模型
- routes/: 路由文件夹
**2. Agent 模式**
AI 可以自主执行任务:
- 运行终端命令
- 创建/删除文件
- 安装依赖
- 运行测试
::
创建一个 Python 项目:
1. 初始化虚拟环境
2. 安装 flask 和 pytest
3. 创建基本的项目结构
4. 写一个简单的测试
5. 运行测试确保通过
实用示例
--------
**创建完整功能**
::
@codebase
为这个项目添加用户认证功能:
1. 使用 JWT
2. 支持注册、登录、登出
3. 添加认证中间件
4. 写单元测试
**重构项目结构**
::
@src/
重构这个文件夹:
1. 按功能模块划分
2. 每个模块有自己的 __init__.py
3. 添加类型注解
4. 更新 import 语句
Tab 补全
========
Tab 补全是 Cursor 的智能代码补全功能。
基本用法
--------
1. 正常编写代码
2. 当看到灰色的建议时,按 ``Tab`` 接受
3. 按 ``Esc`` 忽略建议
Tab 补全的特点
--------------
- **多行补全**: 可以补全整个函数
- **上下文感知**: 根据文件内容和项目结构补全
- **智能推断**: 根据函数名推断实现
示例
----
输入函数签名::
def calculate_fibonacci(n: int) -> int:
按 Tab,AI 会补全整个实现。
配置 Tab 补全
-------------
在 Settings → Features → Cursor Tab 中可以配置:
- 启用/禁用
- 补全触发延迟
- 补全长度限制
常用快捷键总览
==============
核心快捷键
----------
.. list-table::
:header-rows: 1
:widths: 30 35 35
* - 功能
- Mac
- Windows/Linux
* - 打开 Chat
- ``Cmd+L``
- ``Ctrl+L``
* - Inline Edit
- ``Cmd+K``
- ``Ctrl+K``
* - 打开 Composer
- ``Cmd+I``
- ``Ctrl+I``
* - 接受建议
- ``Tab``
- ``Tab``
* - 拒绝建议
- ``Esc``
- ``Esc``
* - 新建 Chat
- ``Cmd+Shift+L``
- ``Ctrl+Shift+L``
编辑相关
--------
.. list-table::
:header-rows: 1
:widths: 30 35 35
* - 功能
- Mac
- Windows/Linux
* - 接受 Diff
- ``Cmd+Y``
- ``Ctrl+Y``
* - 拒绝 Diff
- ``Cmd+N``
- ``Ctrl+N``
* - 接受全部
- ``Cmd+Shift+Y``
- ``Ctrl+Shift+Y``
* - 拒绝全部
- ``Cmd+Shift+N``
- ``Ctrl+Shift+N``
导航相关
--------
.. list-table::
:header-rows: 1
:widths: 30 35 35
* - 功能
- Mac
- Windows/Linux
* - 命令面板
- ``Cmd+Shift+P``
- ``Ctrl+Shift+P``
* - 快速打开文件
- ``Cmd+P``
- ``Ctrl+P``
* - 符号搜索
- ``Cmd+Shift+O``
- ``Ctrl+Shift+O``
* - 全局搜索
- ``Cmd+Shift+F``
- ``Ctrl+Shift+F``
实战练习
========
练习 1:使用 Chat 理解代码
--------------------------
1. 打开一个你不熟悉的代码文件
2. 按 ``Cmd+L`` 打开 Chat
3. 输入:``请解释这个文件的整体结构和主要功能``
4. 针对不理解的部分继续提问
练习 2:使用 Inline Edit 重构
-----------------------------
1. 找一段可以优化的代码
2. 选中代码,按 ``Cmd+K``
3. 尝试以下指令:
- ``使用更 Pythonic 的方式重写``
- ``添加错误处理``
- ``提取为单独的函数``
练习 3:使用 Composer 创建功能
------------------------------
1. 按 ``Cmd+I`` 打开 Composer
2. 输入以下需求::
创建一个简单的命令行 TODO 应用:
- todo.py: 主程序
- storage.py: 数据存储(使用 JSON 文件)
- 支持:添加、删除、列出、标记完成
3. 观察 AI 如何创建多个文件
4. 检查并运行生成的代码
高级技巧
========
1. 组合使用
-----------
- 先用 Chat 讨论方案
- 用 Composer 实现功能
- 用 Inline Edit 微调细节
2. 上下文管理
-------------
- 使用 ``@`` 精确引用需要的文件
- 避免引用太多无关文件
- 使用 ``@codebase`` 让 AI 自己搜索
3. 迭代优化
-----------
- 不要期望一次完美
- 分步骤完成复杂任务
- 及时反馈问题让 AI 修正
4. 利用 Agent 模式
------------------
对于需要执行命令的任务,使用 Composer 的 Agent 模式:
- 自动安装依赖
- 运行测试
- 执行构建命令
小结
====
本教程介绍了 Cursor 的核心命令:
- **Chat (Cmd+L)**: 对话式交互,适合问答和解释
- **Inline Edit (Cmd+K)**: 代码内快速修改
- **Composer (Cmd+I)**: 多文件编辑和复杂任务
- **Tab 补全**: 智能代码补全
关键要点:
1. 选择合适的工具完成任务
2. 善用 ``@`` 引用提供上下文
3. 组合使用不同功能提高效率
下一步
------
在下一个教程中,我们将学习如何配置 Cursor Rules 来定制 AI 的行为。
练习
====
1. 使用 Chat 解释一个复杂的开源项目
2. 使用 Inline Edit 重构 10 段代码
3. 使用 Composer 从零创建一个完整的小项目
4. 记录你最常用的快捷键组合
参考资源
========
- `Cursor 官方文档 - Features `_
- `Cursor 快捷键参考 `_
- `Cursor Tips and Tricks `_