第 4 章 · 文件操作与代码编辑
本章目标:掌握 Claude Code 的文件读写工具链,理解 diff 预览确认流程,学会高效搜索代码库。
4.1 文件工具概览
Claude Code 内置以下文件操作工具:
| 工具 | 功能 | 需要确认 |
|---|---|---|
| Read | 读取文件内容 | ❌ |
| Write | 创建新文件或覆盖 | ✅ |
| Edit | 精确替换已有文件中的文本 | ✅ |
| Grep | 正则搜索文件内容(类似 ripgrep) | ❌ |
| Glob | 按模式匹配文件路径 | ❌ |
4.2 Read:读取文件
当你提问"这个函数做什么"时,Claude Code 自动调用 Read 获取文件内容:
text
> src/utils/parser.py 的 parse_config 函数是干什么的?它会:
- 用 Read 读取
src/utils/parser.py - 分析函数逻辑
- 返回解释
你也可以指定行号范围:
text
> 读一下 app/models/user.py 的第 50-100 行4.3 Write 与 Edit:创建和修改
创建新文件
text
> 在 src/utils/ 下创建一个 date_utils.py,包含格式化日期和解析日期字符串的函数Claude Code 会用 Write 创建文件,并在终端显示 diff 预览供你确认:
diff
+ src/utils/date_utils.py (new file)
+
+ from datetime import datetime, timezone
+
+
+ def format_iso(dt: datetime) -> str:
+ """Format datetime to ISO 8601 string in UTC."""
+ ...按 y 确认,n 拒绝,e 编辑后保存。
修改已有文件
text
> 把 parser.py 里的 ValueError 改成自定义的 ConfigParseErrorClaude Code 使用 Edit 工具做精确文本替换,同样展示 diff。
4.4 Grep 与 Glob:搜索
text
> 找出项目中所有使用了 deprecated 的 requests.get 的地方内部执行等效于 grep -rn "requests.get" --include="*.py"。
text
> 有哪些文件名包含 test 的 Python 文件?使用 Glob 匹配 **/test*.py。
4.5 多文件原子操作
Claude Code 能在一次任务中跨多个文件协调修改:
text
> 把项目里的 print() 全部换成 logger.info()它会:
- 用 Grep 找到所有
print(出现位置 - 逐个文件用 Edit 替换
- 展示每个文件的 diff
- 你逐个确认
本章小结
- 五大文件工具:Read / Write / Edit / Grep / Glob;
- 写操作需要你确认 diff 后才生效;
- 多文件修改自动协调、逐个确认;
- Grep/Glob 免费搜索,不消耗额外权限。
🧪 随堂测验
点击你认为正确的选项。答错时会展示正确答案与原因解析。
1. Claude Code 中哪个工具用于精确替换已有文件中的文本?
2. 当 Claude Code 要写入或修改文件时,默认行为是什么?
3. 要在项目中搜索所有包含 TODO 注释的 Python 文件,应该使用什么?
4. "把项目里所有 print 改成 logging.info" 这种跨多文件的任务,Claude Code 会怎么处理?
🛠️ 动手实践
- 让 Claude Code 创建一个新模块并编写测试。
- 让它把项目中某个旧 API 调用替换为新版本。
- 用搜索功能找出项目中所有硬编码的 URL。
完成后进入第 5 章。