Skip to content

第 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 函数是干什么的?

它会:

  1. 用 Read 读取 src/utils/parser.py
  2. 分析函数逻辑
  3. 返回解释

你也可以指定行号范围:

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 改成自定义的 ConfigParseError

Claude 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()

它会:

  1. 用 Grep 找到所有 print( 出现位置
  2. 逐个文件用 Edit 替换
  3. 展示每个文件的 diff
  4. 你逐个确认

本章小结

  • 五大文件工具:Read / Write / Edit / Grep / Glob;
  • 写操作需要你确认 diff 后才生效;
  • 多文件修改自动协调、逐个确认;
  • Grep/Glob 免费搜索,不消耗额外权限。

🧪 随堂测验

点击你认为正确的选项。答错时会展示正确答案与原因解析。

1. Claude Code 中哪个工具用于精确替换已有文件中的文本?

2. 当 Claude Code 要写入或修改文件时,默认行为是什么?

3. 要在项目中搜索所有包含 TODO 注释的 Python 文件,应该使用什么?

4. "把项目里所有 print 改成 logging.info" 这种跨多文件的任务,Claude Code 会怎么处理?

🛠️ 动手实践

  1. 让 Claude Code 创建一个新模块并编写测试。
  2. 让它把项目中某个旧 API 调用替换为新版本。
  3. 用搜索功能找出项目中所有硬编码的 URL。

完成后进入第 5 章