sublime全局搜索替换必须同时满足项目已加载、正则模式手动开启(.图标点亮)、where路径显式限定(如“.”或“./src//.js”)三条件,缺一则replace all无效;替换后需手动save all。

Sublime 的全局搜索替换不是“开了正则就能用”,而是必须同时满足三个硬条件:项目已加载、.*图标点亮、Where路径显式限定——漏一个,Replace All in Files就等于白点。
Ctrl+Shift+F 搜不到子目录?检查 Where 路径写法
默认的 Where 值 ./ 只搜当前目录,不递归。想搜 src 下所有 JS 文件,必须写成 ./src/**/*.js(双星号 ** 才启用递归)。
- 常见错误:
./src/*.js→ 只匹配src/一级下的 JS,漏掉src/utils/、src/api/ - 多个后缀要逗号分隔:
./src/**/*.ts,./src/**/*.tsx(不支持*.{ts,tsx}) - 排除目录用减号前缀:
-./node_modules -./dist,多个排除项之间空格或换行均可 - 如果侧边栏没树形目录、状态栏左下角没显示路径 → 没进项目模式,必须先
File → Open Folder…
^ 和 $ 不按行匹配?多行模式没开
默认情况下,^ 只匹配整个文件开头,$ 只匹配整个文件结尾。搜 ^import 只能命中第一行,其他行全忽略。
- 必须启用多行模式:点击面板右下角的
⇧图标(或按Alt+M),或在正则前加(?m),如(?m)^import - Windows 下
$会停在\r前,导致替换后残留回车;建议统一用\R(Sublime 内置通用换行符)代替$ - 若状态栏编码不是
UTF-8,中文场景下^/$可能因乱码失效,先执行File → Save with Encoding → UTF-8 with BOM
$1 替换后原样输出?捕获组或正则开关出问题
$1 在替换框里被当字面量输出,90% 是因为两个原因:查找框没用 () 定义捕获组,或者 .* 图标根本没点亮。
- Sublime 只认
$1、$2这种写法,不支持\1;写$字面量需用$$ - 嵌套括号也计入编号:比如
((\w+))中,外层是$1,内层是$2 - 安全写法示例:把
user_id: 123改成userId: 123,查\buser_id:\s*(\d+),替userId: $1(\b防止误中post_user_id) - 替换前务必点
Find All,看高亮是否精准;再开Replace Preview(Ctrl+Shift+H)确认$1展开结果
跨文件替换卡死或误改?二进制文件和缓存是元凶
Sublime 默认硬读所有匹配路径下的文件,包括 package-lock.json、图片、压缩包,内存暴涨甚至无响应。
- 三层防护才稳:
— 显式限定后缀:./src/**/*.js,./src/**/*.ts
— 关闭索引干扰:在Preferences → Settings加"index_files": false(尤其含大node_modules时)
— 清缓存救急:删掉~/.config/sublime-text-3/Index/(Linux/macOS)或%LOCALAPPDATA%\Sublime Text 3\Index\(Windows) -
Replace All in Files没有预确认弹窗,一旦点下去就不可逆。务必先点Find All,看右下角数字是否合理;上千匹配项出现,先停手检查正则或路径 - 大文件或嵌套结构别硬刚正则:匹配
<div></div>嵌套?正则无法配对,用解析器或插件;重格式化 JSON?用编辑器自带格式化命令
最易被忽略的是:每次打开 Ctrl+F、Ctrl+H、Ctrl+Shift+F 面板,.* 开关都是独立的,必须逐个确认点亮——它不会继承上一次的状态。











