Ctrl+H仅替换当前文件,Ctrl+Shift+F用于跨文件替换;需正确配置Where路径、启用正则(.*按钮)、用$1引用捕获组,并替换前检查Git状态与测试覆盖。

Ctrl+H 是当前文件替换的唯一入口
想改当前打开的这个文件里所有某段文字?别点菜单、别右键,直接按 Ctrl+H(Windows/Linux)或 Cmd+Option+F(macOS)。这个面板只作用于当前文件,和全局搜索完全隔离。
常见错误是误按 Ctrl+F 后直接回车——那只是跳转,不带替换功能;或者点了右键“在文件中查找”,结果弹出的是项目级面板,范围失控。
- 替换前务必先点
Find All预览匹配项,尤其含特殊字符(如\n、"、$)时,避免正则未启用却写了$1导致替换失败 - 勾选
Case Sensitive(Aa)或Whole Word(\b)能防止把user_id误替成user_id_old里的user - 如果要批量删空行,查
\n\s*\n并启用正则模式,否则只会当字面量处理
Ctrl+Shift+F 才真正触发跨文件搜索替换
全项目改名、统一 API 前缀、清理废弃日志语句——这些必须用 Ctrl+Shift+F(Windows/Linux)或 Cmd+Shift+F(macOS)。它不是“增强版 Ctrl+H”,而是独立通道,底层走的是文件系统遍历,不依赖当前焦点文件。
很多人卡在“点了没反应”或“只搜了部分目录”,问题几乎都出在 Where 字段配置上:
- 默认值常是
<current file></current>或空,必须手动改成<project></project>或具体路径如src/ - 要排除
node_modules,得写成<project>, -node_modules/</project>,注意斜杠和逗号空格格式 - 只搜 JS 文件?填
*.js;混搜 TS 和 JS?用*.{ts,js}
正则替换时捕获组引用必须用 $1 而非 \1
Sublime Text 的正则引擎用 、 引用分组,不是 。写错就变成字面量替换,比如查 "(\w+)" 想换成 '',若写成 '',结果会是字面的 '' 而非实际内容。
典型场景:
- 把双引号字符串转单引号:
Find:"([^"]*)",Replace:'$1' - 给所有数字加前缀:
Find:(\d+),Replace:id_$1 - 删行首缩进:
Find:^[ \t]+(启用正则),Replace: 空
注意:启用正则必须点面板左下角的 .* 按钮,不是勾选某个设置项。
批量替换前必须确认 Git 状态和测试覆盖
Sublime 的 Replace All 没有撤销栈跨文件,一旦点下去,所有文件同时变更,编辑器自身无法回退。
真实项目里最容易翻车的环节不是操作本身,而是替换后没验证:
- 执行前确保已
git add -u或至少git status清晰,替换完立刻git diff扫一眼改动范围 - 如果改的是函数名或配置 key,运行单元测试或手动触发相关功能路径,避免只改了调用侧却漏掉定义侧
- 替换完再用原字符串
Ctrl+Shift+F搜一次,确认无残留——尤其注意大小写混合、带下划线/驼峰变体的命名
最隐蔽的坑是正则边界没写严,比如用 \d+ 替换数字,结果把 123abc 里的 123 也抽走了,而你本意只想动独立数字。


















