Ctrl+Shift+H(Windows/Linux)或 Cmd+Shift+H(macOS)才能批量替换所有已打开文件,且需确保Where框为空、右下角.*图标高亮、替换内容非空、文件未只读,并手动Save All保存。

Ctrl+H 只作用于当前文件,想改所有打开的文件得换招
默认按 Ctrl+H(Windows/Linux)或 Cmd+H(macOS)打开的查找替换面板,**只处理当前活动标签页**。哪怕你打开了 20 个文件,点了 Replace All 也只动这一个——这不是 bug,是 Sublime 的设计逻辑。
要真正批量操作“所有已打开的文件”,必须用 Ctrl+Shift+H(Windows/Linux)或 Cmd+Shift+H(macOS)。这个快捷键调出的是「Find in Files」面板,但当 Where 框留空时,它的行为就是:只搜当前已打开的所有标签页,不碰磁盘上未打开的文件。
- 确认
Where框为空(不是.,也不是./src),否则会切到项目级搜索 - 右下角
.*图标必须高亮(蓝色),否则正则元字符如\d、^全部失效 - 如果
Replace All按钮灰掉,先检查是否漏填了Replace内容,或某个打开的文件是只读状态(右下角显示RO)
正则替换中 $1 失效?大概率是括号没转义或模式没开
写 getUser$$([^)]+)$$ 想匹配 getUser(123),再用 getUser({ $1 }) 替换,结果没反应——常见原因有两个:
- 圆括号
()是正则元字符,必须手动转义成$$和$$,否则 Sublime 当普通字符匹配,根本找不到内容 - 没点右下角
.*图标,或没按Alt+R切换正则模式,这时$$就只是两个字面括号,$1在替换框里也不会被解析 -
$0表示整个匹配,$1是第一个捕获组,不能混用\1(Sublime 不支持这种引用)
替换后文件没变?不是失败,是根本没保存
点了 Replace All 后,所有被改的文件标签页右上角会出现星号 *,但这只是内存脏状态——Sublime **从不自动写入磁盘**。关掉窗口、崩溃、甚至切到别的应用再回来,没保存的修改就全丢了。
- 必须手动执行
File → Save All,或快捷键:Ctrl+K松开后再按Ctrl+B(Windows/Linux),macOS 是Cmd+K→Cmd+B - 没有跨文件撤销历史:点了
Replace All就等于一次性把所有文件变成“已修改未保存”,之后只能单个文件Ctrl+Z,不能一键撤回全部 - 建议操作前先
git add -A && git commit -m "before open-files replace",这是唯一可靠的兜底方式
为什么 Find All 显示 0 个匹配?检查这三个地方
输入完查找内容,点了 Find All 却没结果,别急着改正则,先看:
-
Where框是否真为空?多一个空格、一个点、一个斜杠都会让它切换成路径搜索模式,从而忽略已打开文件 - 右下角
.*图标是否激活?没开正则时,^、$、\b全部当普通字符,自然搜不到 - 是否勾选了
Case Sensitive(Aa)?比如搜console.log却开了大小写敏感,而代码里是Console.log,那就匹配不上
最稳的做法是:先关掉所有选项,用纯文本搜一个确定存在的单词,确认流程跑通,再逐步加正则和过滤条件。

















