Claude Code 教程 -02- CLI交互技巧
·
Claude Code -02- CLI交互技巧
掌握 Claude Code CLI 的高效交互方式,提升命令行开发效率。
文章目录
输入技巧
多行输入
Claude Code 支持多行输入,适合复杂指令:
# 方式1:直接粘贴多行文本
> 帮我创建一个 Python 类,要求如下:
1. 类名:DataAnalysis
2. 功能:处理 CSV 数据
3. 方法:
- read_data(file_path)
- clean_data()
- save_data(output_path)
4. 添加类型注解

# 方式2:使用换行 Ctrl + j
❯ 请分析 src/main.py
重点关注
1、函数设计是否合理
2、是否有性能瓶颈
3、异常处理是否完善

文件路径补全
# 输入 @ 后按 Tab 补全文件路径
> 读取 @data_analysis.py
> 读取 @src/main.py
# 支持模糊匹配
> 分析 @utils<Tab>
# 显示所有包含 utils 的文件

上下文管理
文件引用技巧
# 引用单个文件
> @data_analysis.py 的作用是什么?
# 引用多个文件(比较)
> 比较 @src/v1/api.py 和 @src/v2/api.py
# 引用目录
> 分析 @src/models/ 目录下所有模型类
# 引用特定行
> 优化 @src/utils.py#45-60 这段代码
# 引用符号
> 解释 @data_analysis 类


会话上下文
# 查看当前上下文
> 当前项目的主要文件有哪些?
# 上下文会保留,可以追问
> 刚才提到的那个函数具体怎么实现?
# 清除上下文重新开始
> /clear


上下文长度管理
# 当对话太长时,压缩历史
> /compact
# Claude 会总结之前的对话要点
# 继续在新的上下文中讨论
总结对话:
高效体温模式
STAR提问法
Situation(情境):当前文件/项目状态
Task(任务):具体要完成什么
Action(行动):希望 AI 采取什么操作
Result(结果):期望的输出格式
示例:
> 【情境】src/api.py 是一个 FastAPI 路由文件
【任务】需要添加用户认证中间件
【行动】在现有路由上添加 JWT 验证
【结果】返回修改后的完整代码,并说明使用方法
分布提问
将复杂的任务分解为简单的步骤:
# 第1步:分析
> 分析 src/auth.py 的当前实现
# 第2步:设计(基于分析结果)
> 基于刚才的分析,设计 JWT 认证中间件
# 第3步:实现
> 实现刚才设计的中间件,集成到 src/api.py
# 第4步:测试
> 为这个中间件生成单元测试
模版化提问
# 代码生成模板
> 创建一个 [类型],要求:
- 功能:[具体功能]
- 输入:[参数说明]
- 输出:[返回值说明]
- 异常:[错误处理]
# 代码审查模板
> 审查 @文件,关注:
- 代码规范性
- 性能问题
- 安全隐患
- 可维护性
# 重构模板
> 重构 @文件,改进:
- [具体问题1]
- [具体问题2]
保持原有功能不变
输出控制
控制输出格式
# 指定输出格式
> 以表格形式列出项目中的所有 API 端点
> 用代码块返回修改后的函数
> 先给出简要分析,再提供详细建议
控制输出的长度
# 要求简洁
> 简要说明 data_analysis.py 的功能(不超过 100 字)
# 要求详细
> 详细分析 data_analysis.py 的设计,包括:
1. 架构说明
2. 优缺点分析
3. 改进建议

详细分析


多轮精炼
# 第1轮:获取初稿
> 创建一个日志工具类
# 第2轮:添加要求
> 为这个类添加异步支持
# 第3轮:进一步优化
> 添加日志轮转功能,限制单个文件大小为 10MB
错误处理
常见错误类型
| 错误 | 原因 | 解决 |
|---|---|---|
| AI 理解偏差 | 上下文不足 | 添加 @文件引用 |
| 输出不符合预期 | 要求不明确 | 使用模板化提问 |
| 操作被拒绝 | 权限/安全限制 | 检查文件权限 |
| 命令执行失败 | 环境问题 | 检查环境配置 |
纠正AI 输出
# 指出错误
> 刚才的代码有个问题:缺少异常处理
# 要求修改
> 请重新生成,添加 try-except 块
# 确认理解
> 这次对了。还有,记得添加类型注解
撤销操作
# 指出错误
> 刚才的代码有个问题:缺少异常处理
# 要求修改
> 请重新生成,添加 try-except 块
# 确认理解
> 这次对了。还有,记得添加类型注解
批量操作技巧
批量文件处理
# 批量修改
> 将 @src/ 目录下所有 Python 文件的 print 改为 logging
# 批量生成
> 为 @src/models/ 下每个类生成对应的测试文件
# 批量分析
> 分析 @tests/ 下所有测试文件,找出重复代码
使用通配符
# 使用 * 通配符
> 检查 @src/*_service.py 文件的错误处理
# 多个模式
> 比较 @src/*.py 和 @tests/test_*.py 的命名规范
条件处理
# 条件批量操作
> 在 @src/ 下所有使用了 requests 的文件中,
添加超时参数 timeout=30
# 智能识别
> 找出项目中所有没有类型注解的函数,并添加注解
与外部工具集成
# 在 Cursor 中打开文件
> 在 cursor 中打开 data_analysis.py
# 在 VSCode 中打开
> 在 code 中打开 data_analysis.py
# 使用 vim 编辑
> 使用 vim 编辑 data_analysis.py



终端命令结合
# 结合 git
> 查看 git log,总结最近 5 次提交的主要改动
# 结合测试
> 运行 pytest,分析失败的测试用例
# 结合 lint
> 运行 flake8,修复所有格式问题
管道操作
# 读取命令输出并分析
> 执行 "find . -name '*.py' | head -10",
分析这些文件的用途

实战场景
场景1:代码审查流程
# Step 1: 获取文件列表
> 列出 src/ 目录下所有 Python 文件
# Step 2: 批量审查
> 审查这些文件,检查:
1. 是否符合 PEP8
2. 是否有类型注解
3. 异常处理是否完善
# Step 3: 生成报告
> 生成审查报告,按文件列出问题和建议
场景2:功能开发流程
# Step 1: 需求分析
> 分析需求:添加用户注册功能
# Step 2: 技术方案
> 设计注册功能的实现方案,包括:
- 数据模型
- API 接口
- 验证逻辑
# Step 3: 代码实现
> 实现刚才设计的方案,创建必要的文件
# Step 4: 测试验证
> 为注册功能生成单元测试
> 运行测试验证功能是否正常
问题排查流程
# Step 1: 描述问题
> 测试 test_api.py 失败了,帮我排查原因
# Step 2: 查看错误
> 运行 pytest tests/test_api.py -v,分析错误输出
# Step 3: 定位问题
> 查看 @src/api.py#45-60,这个函数是否有问题?
# Step 4: 修复验证
> 修复问题并重新运行测试
最佳实践
提问原则
| 原则 | 说明 | 示例 |
|---|---|---|
| 具体 | 明确文件和位置 | “优化 @src/utils.py#45” |
| 完整 | 提供足够上下文 | “当前使用 Flask,要迁移到 FastAPI” |
| 可验证 | 输出可以测试 | “生成可运行的代码” |
| 可追溯 | 保留修改历史 | 使用 Git 管理变更 |
效率技巧总结
1. 使用 @符号快速引用文件
2. 善用历史命令(↑↓键)
3. 复杂任务分步处理
4. 批量操作提高效率
5. 结合外部工具(git、pytest 等)
附:Claude Code CLI常用快捷键
适用版本:Claude Code CLI(终端版)。macOS 用户将
Ctrl替换为control可能有不同行为,见文末说明。
对话输入(Chat)
| 快捷键 | 作用 |
|---|---|
Enter |
发送消息 |
Ctrl+J |
插入换行(多行输入) |
Ctrl+S |
暂存当前输入,稍后恢复 |
Escape |
取消当前输入 / 关闭弹窗 |
Ctrl+L |
清空输入框 |
Ctrl+G 或 Ctrl+X Ctrl(Cmd)+E |
用外部编辑器打开当前输入 |
Ctrl+_(即 Ctrl+-) |
撤销上次编辑 |
对话控制
| 快捷键 | 作用 |
|---|---|
Ctrl+C |
中断正在生成的回答 |
Ctrl+D |
退出 Claude Code |
Ctrl+R |
搜索历史命令 |
↑ / ↓ |
上一条 / 下一条历史消息 |
Ctrl+O |
切换对话记录面板(Transcript) |
Ctrl+T |
切换任务列表面板 |
模型与模式
| 快捷键 | 作用 |
|---|---|
Meta+P |
打开模型选择器(Opus / Sonnet / Haiku) |
Meta+O |
切换快速模式(Fast mode) |
Meta+T |
切换扩展思考(Thinking)开关 |
Meta 键说明:macOS 上
Meta=Cmd(⌘),Windows/Linux 上Meta通常是Win键,部分终端可能无法使用,可直接敲/model、/fast命令替代。
权限确认弹窗
| 快捷键 | 作用 |
|---|---|
Y 或 Enter |
同意(Yes) |
Escape 或 N |
拒绝(No) |
↑ / ↓ |
在选项间切换 |
Space |
勾选/取消勾选 |
Tab |
切换到下一个选项区域 |
Shift+Tab |
切换权限模式(总是 / 本次 / 拒绝) |
滚动与浏览(Transcript / 全屏模式)
| 快捷键 | 作用 |
|---|---|
↑ / ↓ 或 K / J |
向上 / 向下滚动一行 |
Ctrl+U |
向上滚动半页 |
Ctrl+D |
向下滚动半页 |
Ctrl+B 或 B |
向上滚动一整页 |
Ctrl+F 或 Space |
向下滚动一整页 |
G |
跳到顶部 |
Shift+G |
跳到底部 |
Escape 或 Q |
退出浏览模式 |
Tab补全与文件选择
| 快捷键 | 作用 |
|---|---|
Tab |
接受补全建议 |
Escape |
关闭补全菜单 |
↑ / ↓ |
在补全候选中移动 |
实用 Slash 命令速查
| 命令 | 作用 |
|---|---|
/help |
查看帮助 |
/clear |
清空对话 |
/compact |
压缩上下文(释放 token) |
/review |
审查当前 PR |
/init |
初始化项目 CLAUDE.md |
/doctor |
诊断配置问题 |
/cost |
查看当前花费 |
/export |
导出对话记录 |
/stats |
查看使用统计 |
/model |
切换模型 |
/fast |
切换快速模式 |
/add-dir |
添加工作目录 |
/ide |
在 IDE 中打开 |
/memory |
管理记忆 |
小贴士
- Ctrl+C 不会退出 — 它只是中断当前回答,连续按两次才会提示退
- 终端兼容性 — Windows Terminal、iTerm2、WezTerm 均表现良好;VS Code 内置终端部分快捷键可能被 IDE 拦截。
- 自定义快捷键 — 编辑 ~/.claude/keybindings.json 可修改所有快
- macOS 用户注意 — macOS 上 Ctrl+C 位置不变,但 Meta 系列(Meta+P、Meta+O 等)对应 Cmd,而 Cmd 在大多数终端里会被系统拦截,建议直接用 slash 命令代替
更多推荐




所有评论(0)