Claude Code的7个核心命令:从入门到精通

432 阅读15分钟

Claude Code的7个核心命令:从入门到精通

用了一段时间Claude Code,发现很多人还在用最笨的方式:把代码复制到网页,让AI改完再粘贴回来。

说实话,你可能只用了Claude Code 10%的能力

今天咱们把7个核心命令彻底讲透。学会这些,你的开发效率至少提升3倍。

为什么要学命令?

很多人觉得:"我会用自然语言就行了,学命令干嘛?"

问题就在这里。自然语言是万能的,但不够精确

举个例子:

你说:"帮我看看这个文件"

Claude的理解

  • 看什么?内容、结构、还是错误?
  • 看完要干嘛?修改、解释、还是重构?
  • 范围多大?整个文件还是某个函数?

你需要再解释一遍,Claude再理解一遍。一来一回,浪费时间。

但如果你用命令:

/read src/utils/parser.js

一句话说清楚:读取这个文件,给我完整内容。

这就是命令的价值:精确、高效、可预测。

命令的底层逻辑

在讲具体命令之前,先说说Claude Code的工作原理。

Claude本质上是个对话式AI,但加上CLI之后,它多了这些能力:

  1. 文件操作:读、写、搜索、编辑
  2. 终端执行:运行命令、查看输出
  3. 代码理解:解析语法、分析结构
  4. 项目管理:多文件协同、依赖追踪

命令就是触发这些能力的快捷方式。

好比你开车:

  • 自然语言 = 你告诉司机"往前走,快一点,左转"
  • 命令 = 你自己握方向盘

掌握命令,就是把主动权拿在手上。


命令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会:

  1. 读取文件
  2. 找到 formatDate 函数
  3. 修改代码,添加参数
  4. 保存文件

修改前

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会:

  1. 把文件重命名为 User.ts
  2. 添加接口定义
  3. 给方法加返回值类型
  4. 给属性加类型注解

进阶技巧

技巧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会列出所有待办事项:

找到 8TODO1. 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会:

  1. 确认文件真的没有被引用
  2. 删除文件
  3. 更新相关导入语句
案例2:删除函数
/delete src/utils/helpers.js:formatOldDate

删除这个函数,已经有新的 formatDate 替代了

Claude会:

  1. 删除函数定义
  2. 检查是否有地方还在调用
  3. 如果有,提示你先重构调用方
案例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就知道要做什么。


最后的建议

学命令不是目的,提高效率才是。

你不需要记住所有命令,只要记住这几个最常用的:

  1. /read - 看代码
  2. /edit - 改代码
  3. /search - 找代码
  4. /run - 跑命令

其他的用到再学。

最重要的是养成习惯

  • 改代码前,先 /search 看影响范围
  • 写完代码后,立刻 /run 测试
  • 看不懂的代码,马上 /explain
  • 重复的操作,组合成流程

一周后,你会发现:

  • 调试时间减少50%
  • 代码质量提升
  • 不再害怕重构
  • 工作效率翻倍

试试看,从今天的任务开始用命令。