关于 find-replace
find-replace 是使用 sd 在文件中查找和替换文本的命令行技能,适用于代码与文本编辑,并提供批量操作预览和避免部分匹配的指导。
主要功能
- 01使用 sd 全局替换文本
- 02跨多个文件执行替换
- 03预览并安全批量处理
- 04使用正则单词边界
- 05转义特殊字符
适用场景
- 01跨源文件重命名变量或函数
- 02更新项目中的导入路径
- 03应用替换前预览结果
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ 0xdarkmatter/ claude-mods --skill find-replace安装后在 Claude Code 中输入/find-replace确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
assets/.gitkeepreferences/advanced-patterns.mdscripts/.gitkeep详细介绍
查找和替换
使用 sd 进行现代化查找和替换。
sd 基础知识
# Replace in file (in-place)
sd 'oldText' 'newText' file.txt
# Replace in multiple files
sd 'oldText' 'newText' *.js
# Preview without changing (pipe)
cat file.txt | sd 'old' 'new'
sd 与 sed 对比
| sed | sd |
|---|---|
sed 's/old/new/g' | sd 'old' 'new' |
sed -i 's/old/new/g' | sd 'old' 'new' file |
sed 's#path/to#new/path#g' | sd 'path/to' 'new/path' |
主要区别: sd 默认进行全局替换,不存在分隔符问题。
常见模式
# Variable/function rename
sd 'oldName' 'newName' src/**/*.ts
# Word boundaries (avoid partial matches)
sd '\boldName\b' 'newName' src/**/*.ts
# Import path update
sd "from '../utils'" "from '@/utils'" src/**/*.ts
# Capture groups
sd 'console\.log\((.*)\)' 'logger.info($1)' src/**/*.js
安全的批量处理工作流
# 1. List affected files
rg -l 'oldPattern' src/
# 2. Preview replacements
rg 'oldPattern' -r 'newPattern' src/
# 3. Apply
sd 'oldPattern' 'newPattern' $(rg -l 'oldPattern' src/)
# 4. Verify
rg 'oldPattern' src/ # Should return nothing
git diff # Review changes
特殊字符
| 字符 | 转义方式 |
|---|---|
. | \. |
* | \* |
[ ] | \[ \] |
$ | \$ |
\ | \\ |
提示
| 提示 | 原因 |
|---|---|
始终先使用 rg -r 预览 | 避免出错 |
| 批量修改前使用 git | 便于回滚 |
使用 \b 表示单词边界 | 避免部分匹配 |
| 为模式加引号 | 防止 shell 进行解释 |
更多资源
如需了解详细模式,请加载:
./references/advanced-patterns.md- 正则表达式、批量处理工作流和实际示例
评论
支持 Markdown