Claude Code的7个核心命令:从入门到精通
用了一段时间Claude Code,发现很多人还在用最笨的方式:把代码复制到网页,让AI改完再粘贴回来。
说实话,你可能只用了Claude Code 10%的能力。
今天咱们把7个核心命令彻底讲透。学会这些,你的开发效率至少提升3倍。
为什么要学命令?
很多人觉得:"我会用自然语言就行了,学命令干嘛?"
问题就在这里。自然语言是万能的,但不够精确。
举个例子:
你说:"帮我看看这个文件"
Claude的理解:
- 看什么?内容、结构、还是错误?
- 看完要干嘛?修改、解释、还是重构?
- 范围多大?整个文件还是某个函数?
你需要再解释一遍,Claude再理解一遍。一来一回,浪费时间。
但如果你用命令:
/read src/utils/parser.js
一句话说清楚:读取这个文件,给我完整内容。
这就是命令的价值:精确、高效、可预测。
命令的底层逻辑
在讲具体命令之前,先说说Claude Code的工作原理。
Claude本质上是个对话式AI,但加上CLI之后,它多了这些能力:
- 文件操作:读、写、搜索、编辑
- 终端执行:运行命令、查看输出
- 代码理解:解析语法、分析结构
- 项目管理:多文件协同、依赖追踪
命令就是触发这些能力的快捷方式。
好比你开车:
- 自然语言 = 你告诉司机"往前走,快一点,左转"
- 命令 = 你自己握方向盘
掌握命令,就是把主动权拿在手上。
命令1:/read - 精准读取文件
基本用法
/read <文件路径>
作用:让Claude读取指定文件的内容。
场景:
- 开始重构前,先看看现有代码
- Debug时,检查具体文件
- 学习新项目,快速浏览代码
实战案例
案例1:读取配置文件
/read config/database.js
Claude会输出:
module.exports = {
host: 'localhost',
port: 3306,
user: 'root',
password: 'secret',
database: 'myapp'
}
然后你可以说:
密码写死在代码里不安全,改成从环境变量读取
Claude会立刻重构:
module.exports = {
host: process.env.DB_HOST || 'localhost',
port: process.env.DB_PORT || 3306,
user: process.env.DB_USER || 'root',
password: process.env.DB_PASSWORD,
database: process.env.DB_NAME || 'myapp'
}
案例2:批量读取多个文件
/read src/components/Header.jsx
/read src/components/Footer.jsx
/read src/components/Sidebar.jsx
一次读三个文件,让Claude了解整体结构,然后你可以问:
这三个组件有什么共同的样式代码可以抽取?
Claude会分析重复部分,提取成公共样式文件。
进阶技巧
技巧1:读取部分内容
/read src/api/user.js:20-50
只读取第20-50行,聚焦特定函数。
技巧2:读取并解释
/read utils/crypto.js
这个文件是做什么的?有没有安全问题?
Claude会先读取,再分析并给出安全建议。
技巧3:对比两个版本
/read src/app.js
/read backup/app.js.bak
对比这两个文件,告诉我改了什么
Claude会逐行对比,列出所有变化。
常见错误
❌ 错误用法:
/read *.js # 不支持通配符
✅ 正确做法:
/read src/app.js
/read src/index.js
/read src/config.js
或者先用 /search 找到所有文件,再逐个读取。
命令2:/edit - 精准修改代码
基本用法
/edit <文件路径>
作用:修改指定文件的内容。
场景:
- 修复Bug
- 重构代码
- 添加新功能
- 优化性能
实战案例
案例1:修改单个函数
/edit src/utils/format.js
把 formatDate 函数改成支持自定义格式
Claude会:
- 读取文件
- 找到
formatDate函数 - 修改代码,添加参数
- 保存文件
修改前:
function formatDate(date) {
return date.toISOString();
}
修改后:
function formatDate(date, format = 'ISO') {
switch(format) {
case 'ISO':
return date.toISOString();
case 'locale':
return date.toLocaleString();
case 'short':
return date.toLocaleDateString();
default:
return date.toString();
}
}
案例2:批量替换
/edit src/api/*.js
把所有的 var 改成 const 或 let
Claude会遍历所有JS文件,根据上下文决定用 const 还是 let。
案例3:重构类结构
/edit src/models/User.js
把这个类改成TypeScript,加上类型注解
Claude会:
- 把文件重命名为
User.ts - 添加接口定义
- 给方法加返回值类型
- 给属性加类型注解
进阶技巧
技巧1:条件修改
/edit src/components/Button.jsx
只修改默认导出的Button组件,其他部分不动
Claude只会改特定部分,保持其他代码不变。
技巧2:增量修改
/edit package.json
在 scripts 里加一个 "test:watch" 命令
Claude会精准插入新字段,不影响现有配置。
技巧3:安全重构
/edit src/auth/login.js
重构这个文件,但要保持向后兼容
Claude会在重构时保留旧接口,或添加兼容层。
常见错误
❌ 错误用法:
/edit src/app.js
改一下 # 太模糊
✅ 正确做法:
/edit src/app.js
把 console.log 改成用 winston 记录日志
说清楚要改什么、改成什么样。
命令3:/search - 全局代码搜索
基本用法
/search <关键词>
作用:在整个项目中搜索代码、注释、文件名。
场景:
- 找到某个函数的定义
- 查看哪些地方用了某个API
- 定位错误发生的位置
- 了解项目结构
实战案例
案例1:找函数定义
/search function calculateTotal
Claude会返回:
找到 3 处匹配:
1. src/utils/cart.js:45
function calculateTotal(items) {
return items.reduce((sum, item) => sum + item.price, 0);
}
2. src/components/Checkout.jsx:89
const total = calculateTotal(cartItems);
3. tests/cart.test.js:12
expect(calculateTotal(mockItems)).toBe(150);
你可以接着问:
把这个函数移到 src/lib/pricing.js,更新所有引用
案例2:找配置项
/search API_KEY
Claude会列出所有用到 API_KEY 的地方:
找到 5 处匹配:
1. .env
API_KEY=sk_test_xxxxx
2. config/api.js:3
const apiKey = process.env.API_KEY;
3. src/services/openai.js:7
headers: { 'Authorization': `Bearer ${API_KEY}` }
你可以说:
检查所有使用 API_KEY 的地方,确保都加了错误处理
案例3:找TODO标记
/search TODO:
Claude会列出所有待办事项:
找到 8 个 TODO:
1. src/app.js:23
// TODO: 添加错误边界
2. src/api/user.js:56
// TODO: 实现缓存机制
3. src/utils/validator.js:89
// TODO: 支持自定义验证规则
你可以说:
按优先级排序这些TODO,然后我们逐个实现
进阶技巧
技巧1:正则搜索
/search /function\s+\w+\(/
找到所有函数定义(用正则表达式)。
技巧2:限定范围
/search "console.log" --path src/
只在 src/ 目录搜索。
技巧3:排除文件
/search import --exclude node_modules/ --exclude dist/
搜索import语句,但跳过依赖和构建目录。
常见错误
❌ 错误用法:
/search 错误 # 中文可能匹配不准
✅ 正确做法:
/search error
/search ERROR
/search throw
用英文关键词,或者搜索具体的函数名、变量名。
命令4:/run - 执行终端命令
基本用法
/run <命令>
作用:在项目目录执行终端命令,查看输出。
场景:
- 运行测试
- 构建项目
- 安装依赖
- 查看Git状态
实战案例
案例1:运行测试
/run npm test
Claude会执行测试,然后分析结果:
运行测试...
✓ 45 tests passed
✗ 3 tests failed
失败的测试:
1. User login - invalid credentials
Expected status 401, got 400
2. Cart calculation - discount code
Expected total $85, got $100
3. API rate limit - exceeded
Expected error message, got timeout
你可以说:
修复第一个失败的测试
Claude会定位代码,修改错误处理逻辑。
案例2:检查代码质量
/run npm run lint
Claude会运行ESLint,列出所有警告和错误:
发现 12 个问题:
❌ src/app.js:45 - 'user' is assigned but never used
❌ src/utils.js:23 - Missing semicolon
⚠️ src/api.js:67 - Function complexity too high (15 > 10)
你可以说:
自动修复所有能修复的问题
Claude会运行 npm run lint -- --fix,然后手动处理剩下的。
案例3:查看项目状态
/run git status
Claude会显示Git状态,并建议下一步操作:
当前分支:feature/user-auth
变更的文件:
modified: src/auth/login.js
modified: src/auth/register.js
new file: tests/auth.test.js
建议:
1. 运行测试确保功能正常
2. 创建commit:git add . && git commit -m "feat: add user authentication"
3. 推送到远程:git push origin feature/user-auth
进阶技巧
技巧1:连续执行
/run npm install && npm test && npm run build
安装依赖、测试、构建,一条命令搞定。
技巧2:条件执行
/run npm test || echo "Tests failed"
测试失败时输出提示。
技巧3:管道处理
/run npm test | grep "failed"
只看失败的测试。
常见错误
❌ 错误用法:
/run cd src && ls # cd 不会保持
✅ 正确做法:
/run ls src/
每次 /run 都是独立的会话,cd 不会保留到下次。
命令5:/create - 创建新文件
基本用法
/create <文件路径>
作用:创建新文件并写入内容。
场景:
- 添加新功能
- 创建测试文件
- 生成配置文件
- 搭建项目结构
实战案例
案例1:创建React组件
/create src/components/UserProfile.jsx
创建一个用户资料组件,包含头像、名字、邮箱、简介
Claude会生成:
import React from 'react';
import PropTypes from 'prop-types';
import './UserProfile.css';
const UserProfile = ({ user }) => {
const { avatar, name, email, bio } = user;
return (
<div className="user-profile">
<div className="avatar-container">
<img src={avatar} alt={`${name}'s avatar`} />
</div>
<div className="user-info">
<h2>{name}</h2>
<p className="email">{email}</p>
<p className="bio">{bio}</p>
</div>
</div>
);
};
UserProfile.propTypes = {
user: PropTypes.shape({
avatar: PropTypes.string.isRequired,
name: PropTypes.string.isRequired,
email: PropTypes.string.isRequired,
bio: PropTypes.string
}).isRequired
};
export default UserProfile;
还会顺便创建 UserProfile.css:
.user-profile {
display: flex;
gap: 1rem;
padding: 1rem;
border: 1px solid #e0e0e0;
border-radius: 8px;
}
.avatar-container img {
width: 80px;
height: 80px;
border-radius: 50%;
object-fit: cover;
}
.user-info h2 {
margin: 0 0 0.5rem 0;
font-size: 1.5rem;
}
.email {
color: #666;
font-size: 0.9rem;
}
.bio {
margin-top: 0.5rem;
line-height: 1.5;
}
案例2:创建API接口
/create src/api/products.js
创建产品相关的API方法:获取列表、获取详情、创建、更新、删除
Claude会生成完整的CRUD接口:
import axios from 'axios';
const BASE_URL = process.env.REACT_APP_API_URL || 'http://localhost:3000';
export const productsAPI = {
// 获取产品列表
getAll: async (params = {}) => {
const { page = 1, limit = 10, category } = params;
const response = await axios.get(`${BASE_URL}/products`, {
params: { page, limit, category }
});
return response.data;
},
// 获取单个产品
getById: async (id) => {
const response = await axios.get(`${BASE_URL}/products/${id}`);
return response.data;
},
// 创建产品
create: async (productData) => {
const response = await axios.post(`${BASE_URL}/products`, productData);
return response.data;
},
// 更新产品
update: async (id, productData) => {
const response = await axios.put(`${BASE_URL}/products/${id}`, productData);
return response.data;
},
// 删除产品
delete: async (id) => {
const response = await axios.delete(`${BASE_URL}/products/${id}`);
return response.data;
}
};
export default productsAPI;
案例3:批量创建文件结构
/create src/features/auth/
创建一个完整的身份验证模块,包含:
- login.js (登录逻辑)
- register.js (注册逻辑)
- logout.js (登出逻辑)
- authSlice.js (Redux状态管理)
- authAPI.js (API调用)
Claude会创建整个目录结构和所有文件。
进阶技巧
技巧1:基于模板创建
/create tests/user.test.js
参考 tests/auth.test.js 的风格,创建用户模块的测试
Claude会先读取现有测试文件,然后按相同风格创建新的。
技巧2:生成样板代码
/create .github/workflows/ci.yml
创建GitHub Actions的CI配置,包含测试和部署
Claude会生成标准的CI/CD配置。
技巧3:智能填充
/create README.md
根据项目代码,自动生成README文档
Claude会分析项目结构、依赖、脚本,生成完整文档。
常见错误
❌ 错误用法:
/create src/app.js # 文件已存在
✅ 正确做法:
- 先检查文件是否存在
- 或者用
/edit修改现有文件
命令6:/delete - 删除文件或代码
基本用法
/delete <文件路径>
作用:删除文件或删除文件中的特定代码。
场景:
- 清理无用代码
- 删除过时文件
- 移除调试代码
- 重构项目结构
实战案例
案例1:删除整个文件
/delete src/legacy/oldAPI.js
这个文件已经废弃,所有调用都迁移到新API了
Claude会:
- 确认文件真的没有被引用
- 删除文件
- 更新相关导入语句
案例2:删除函数
/delete src/utils/helpers.js:formatOldDate
删除这个函数,已经有新的 formatDate 替代了
Claude会:
- 删除函数定义
- 检查是否有地方还在调用
- 如果有,提示你先重构调用方
案例3:批量清理
/delete
删除所有 console.log 和 debugger 语句
Claude会扫描整个项目,移除所有调试代码。
进阶技巧
技巧1:安全删除
/delete src/api/old.js --check-references
删除前检查是否有引用,有的话会提示并拒绝删除。
技巧2:备份后删除
/delete src/components/OldHeader.jsx --backup
删除前自动创建备份文件 OldHeader.jsx.bak。
技巧3:条件删除
/delete src/ --pattern "*.test.js" --if-empty
只删除空的测试文件。
常见错误
❌ 错误直接删除:
/delete src/ # 危险!会删除整个目录
✅ 安全做法:
- 先确认要删除的范围
- 检查是否有备份
- 确保没有重要文件
命令7:/explain - 代码解释与分析
基本用法
/explain <文件路径或代码片段>
作用:解释代码逻辑、分析复杂度、指出潜在问题。
场景:
- 理解别人的代码
- 学习新技术栈
- Code Review
- Debug复杂问题
实战案例
案例1:解释复杂函数
/explain src/algorithms/pathfinding.js:dijkstra
Claude会输出:
这是一个 Dijkstra 最短路径算法的实现。
【算法思路】
1. 初始化:起点距离为0,其他点距离为无穷大
2. 选择未访问节点中距离最小的
3. 更新该节点的邻居节点的距离
4. 标记该节点为已访问
5. 重复2-4直到所有节点访问完
【时间复杂度】O(V² + E),其中V是顶点数,E是边数
【空间复杂度】O(V)
【可能的问题】
- 没有处理负权重边(如需要可以改用Bellman-Ford算法)
- 当图很大时,性能可能不佳(可以用优先队列优化)
【优化建议】
使用最小堆优化,时间复杂度可降至 O((V + E) log V)
案例2:分析性能瓶颈
/explain src/data/processor.js
这个文件处理大数据时很慢,帮我找出瓶颈
Claude会分析:
发现 3 个性能问题:
1. 【严重】第45行:嵌套循环 O(n²)
for (let i = 0; i < data.length; i++) {
for (let j = 0; j < data.length; j++) {
// ...
}
}
建议:使用 Map 优化为 O(n)
2. 【中等】第78行:每次循环都创建新数组
data.forEach(item => {
const temp = [...largeArray]; // 频繁复制
})
建议:在循环外创建,避免重复分配内存
3. 【轻微】第102行:同步文件读取
const content = fs.readFileSync(path);
建议:改用异步 fs.promises.readFile()
案例3:安全审计
/explain src/auth/login.js
检查这个登录函数有没有安全问题
Claude会指出:
发现 4 个安全隐患:
❌ 严重:密码明文存储
第23行:user.password = req.body.password
应该:使用 bcrypt 加密
❌ 严重:SQL注入风险
第34行:query = `SELECT * FROM users WHERE email='${email}'`
应该:使用参数化查询
⚠️ 中等:没有限制登录尝试次数
建议:添加速率限制,防止暴力破解
⚠️ 轻微:错误信息太详细
第45行:return "用户不存在"
应该:统一返回"用户名或密码错误",避免泄露用户信息
进阶技巧
技巧1:对比分析
/explain src/v1/api.js src/v2/api.js
对比这两个版本,说明改进点
Claude会列出所有差异和改进之处。
技巧2:学习模式
/explain src/hooks/useDebounce.js --teach-me
我不懂这个Hook的原理,详细讲解一下
Claude会从基础概念讲起,配合代码逐步解释。
技巧3:生成文档
/explain src/lib/payment.js --generate-docs
Claude会生成JSDoc格式的文档注释。
常见错误
❌ 问题太宽泛:
/explain src/ # 整个目录太大
✅ 正确做法:
/explain src/app.js
/explain src/components/Header.jsx
一次只解释一个文件或函数。
命令组合的威力
单个命令很强,但组合使用才是真正的杀手锏。
场景1:重构一个模块
# 1. 先搜索所有相关文件
/search UserService
# 2. 读取主文件
/read src/services/UserService.js
# 3. 分析代码问题
/explain src/services/UserService.js
# 4. 开始重构
/edit src/services/UserService.js
把这个类拆分成三个独立的模块:
- UserRepository (数据访问)
- UserValidator (验证逻辑)
- UserService (业务逻辑)
# 5. 创建新文件
/create src/repositories/UserRepository.js
/create src/validators/UserValidator.js
# 6. 运行测试
/run npm test -- UserService
# 7. 删除旧文件
/delete src/services/UserService.js
场景2:修复Bug
# 1. 运行测试找到失败的
/run npm test
# 2. 读取失败的测试文件
/read tests/cart.test.js
# 3. 读取被测试的代码
/read src/utils/cart.js
# 4. 解释问题
/explain src/utils/cart.js:calculateDiscount
为什么会返回负数?
# 5. 修复代码
/edit src/utils/cart.js
修复 calculateDiscount 函数,确保折扣不超过原价
# 6. 重新测试
/run npm test -- cart.test.js
场景3:添加新功能
# 1. 先看现有结构
/search payment
/read src/services/PaymentService.js
# 2. 创建新的支付方式
/create src/payments/AlipayProvider.js
创建支付宝支付提供者,实现 PaymentProvider 接口
# 3. 更新主服务
/edit src/services/PaymentService.js
添加支付宝支付方式
# 4. 创建测试
/create tests/alipay.test.js
为支付宝支付创建单元测试
# 5. 运行测试
/run npm test -- alipay
命令使用的5个心法
心法1:先搜索,再操作
永远先用 /search 了解全局,再用其他命令操作。
反例:直接改代码,结果发现改错文件了。
正例:
/search LoginButton
/read src/components/LoginButton.jsx
/edit src/components/LoginButton.jsx
心法2:小步快跑,频繁验证
每改一点就测试,别一口气改完再跑。
反例:改了10个文件,运行发现全炸了,不知道哪里错了。
正例:
/edit File1.js
/run npm test -- File1
/edit File2.js
/run npm test -- File2
心法3:读懂再改,别盲目操作
先用 /explain 理解代码,再用 /edit 修改。
反例:看到一段代码不爽,直接删了,结果其他地方炸了。
正例:
/explain src/legacy/helper.js
# 理解这个函数为什么这样写
/search helper.js
# 看哪些地方在用
/edit src/legacy/helper.js
# 确认安全后再改
心法4:善用组合,自动化流程
把常用的命令串联起来,形成工作流。
比如每次提交代码前:
/run npm run lint
/run npm test
/run npm run build
可以写成一个脚本,一键执行。
心法5:多问Claude,别瞎猜
不确定怎么用命令?直接问Claude。
我想重构这个文件,但不确定会不会影响其他地方,应该怎么做?
Claude会给你安全的步骤:
1. 先用 /search 找所有引用
2. 用 /read 确认每个引用的用法
3. 用 /edit 重构
4. 用 /run npm test 验证
实战演练:用命令完成一个完整任务
任务:给现有的Express项目添加日志系统。
步骤1:了解现状
# 看看项目结构
/search app.js
/search server.js
# 读取主文件
/read src/app.js
# 检查是否已有日志相关代码
/search console.log
/search logger
步骤2:创建日志模块
# 创建日志工具
/create src/utils/logger.js
创建一个基于Winston的日志工具,支持:
- 不同级别的日志(info, warn, error)
- 输出到文件和控制台
- 日志轮转(按天)
- 格式化JSON和文本
# 创建日志中间件
/create src/middleware/requestLogger.js
创建Express中间件,记录每个请求的:
- 请求方法和路径
- 响应状态码
- 响应时间
- 用户IP
步骤3:集成到应用
# 修改主文件
/edit src/app.js
导入并使用 requestLogger 中间件
# 替换所有 console.log
/search console.log
# 根据搜索结果,逐个文件替换
/edit src/routes/user.js
把所有 console.log 替换成 logger.info
把所有 console.error 替换成 logger.error
步骤4:测试验证
# 运行应用
/run npm start
# 检查日志文件是否生成
/run ls logs/
# 发送测试请求
/run curl http://localhost:3000/api/users
# 查看日志内容
/run tail -n 20 logs/app.log
步骤5:完善文档
# 更新README
/edit README.md
在"开发指南"章节添加日志系统的说明
# 创建日志配置说明
/create docs/logging.md
详细说明日志系统的配置和使用方法
全程用命令,10分钟搞定。
常见问题解答
Q1: 命令和自然语言能混用吗?
可以,而且应该混用。
/read src/app.js
这个文件的中间件顺序对吗?错误处理中间件应该放在哪?
先用命令读取文件,再用自然语言提问。
Q2: 命令执行失败怎么办?
Claude会告诉你原因,比如:
❌ /edit src/missing.js
错误:文件不存在
建议:
1. 检查文件路径是否正确
2. 使用 /search 查找文件
3. 或用 /create 创建新文件
Q3: 怎么撤销命令操作?
文件操作:
/run git checkout src/app.js # 恢复文件
删除操作:
/run git restore --staged . # 取消暂存
建议:重要操作前先提交Git。
Q4: 命令有快捷键吗?
部分终端支持:
Ctrl + R:搜索历史命令Tab:自动补全文件路径↑/↓:切换历史命令
Q5: 能自定义命令吗?
目前不支持,但可以用自然语言创建"宏":
帮我记住这个流程:每次重构前,运行"安全检查",包括搜索引用、运行测试、创建备份
以后说"执行安全检查",Claude就知道要做什么。
最后的建议
学命令不是目的,提高效率才是。
你不需要记住所有命令,只要记住这几个最常用的:
/read- 看代码/edit- 改代码/search- 找代码/run- 跑命令
其他的用到再学。
最重要的是养成习惯:
- 改代码前,先
/search看影响范围 - 写完代码后,立刻
/run测试 - 看不懂的代码,马上
/explain - 重复的操作,组合成流程
一周后,你会发现:
- 调试时间减少50%
- 代码质量提升
- 不再害怕重构
- 工作效率翻倍
试试看,从今天的任务开始用命令。