sublime text批量替换需用ctrl+shift+f跨文件、填正确where路径(如.或src/*/.js)、手动开启正则(alt+r)、替换后执行save all,否则易出错或丢失修改。

Sublime Text 批量替换不是“输完就点 Replace All”就能完事的事——默认不跨文件、不认正则、不自动保存,硬上大概率改错 console.log 字符串、user_id 变量名,甚至把路径 src/utils.js 里的下划线也干掉。
Ctrl+H 和 Ctrl+Shift+F 的区别必须分清
很多人按 Ctrl+H(Windows/Linux)或 Cmd+H(macOS)输完内容点 Replace All,结果只改了当前打开的文件。这不是 bug,是设计:Sublime 的替换面板默认就是单文件上下文。
-
Ctrl+H/Cmd+H:只作用于当前文件,适合小范围精修 -
Ctrl+Shift+F/Cmd+Shift+F:唯一能真正跨文件批量操作的入口,必须用它才可能扫到没打开的.js文件 - 菜单栏
Find → Find in Files有时被插件覆盖,别依赖;右键菜单里的“在文件中查找”也不走底层通道,容易漏目录
Where 路径填错等于裸奔
点开 Ctrl+Shift+F 后,Where 框决定搜哪——填错就等于全项目裸奔。常见误填和对应解法:
- 留空:只搜当前已打开的标签页,不是整个项目
-
./src或.\src:Sublime 不按 shell 路径解析,.前缀会被忽略,实际可能扫根目录;Windows 也必须用/,不能用\ - 正确写法:
.(就一个英文点)表示整个项目;src/**/*.js表示递归搜 JS;src,-node_modules表示包含src但排除node_modules - 大小写敏感:
./SRC和./src是两个目录;-dist/结尾带斜杠更稳,避免匹配到distro
正则模式不手动开,所有元字符都当字符串
写了 console\.log\([^)]*\) 却搜不到?八成是忘了点右下角的 .* 图标。它默认灰色,必须点成蓝色才算激活,否则 \d、^、$ 全无效。
- 快捷键切换:
Alt+R(Windows/Linux)或Cmd+Alt+R(macOS) -
.默认不匹配换行符,跨行得加(?s)前缀,比如(?s)function.*? -
^和$默认只匹配全文首尾,不是每行;要匹配行首行尾,得加(?m)或勾选↩(Match line breaks) - 捕获组引用只能用
$1、$2,不能用\1;括号、点号等元字符必须显式转义,如$$、\.
替换后不保存,等于白干
点完 Replace All,文件标签页出现星号 * 是正常现象——Sublime 把变更缓存在内存里,并未落盘。关掉窗口或崩溃就全丢。
- 必须手动执行
File → Save All,或快捷键:Ctrl+K然后Ctrl+B(Windows/Linux),Cmd+K→Cmd+B(macOS) - 大文件(>10MB)可能被跳过,右下角状态栏看编码是否为
UTF-8;非 UTF-8 编码(如 GBK)文件默认不参与替换 - 文件被设为只读(右下角显示
RO)也会静默跳过;Where路径过滤掉了某些扩展名(比如写了**.ts却想改.js)也会漏
最危险的不是不会用,而是忘了自己正在操作的是纯文本——所有“看起来像”的东西,Sublime 都照单全收。哪怕你确认了高亮数量,也建议先 git commit -m "before global replace",再动手。











