sublime的ctrl+shift+f需先加载项目目录,where框填“.”才搜索整个项目;正则替换须点击.*图标激活并正确转义;replace all后必须手动save all,否则更改丢失。

必须先加载项目目录,否则 Ctrl+Shift+F 不生效
Sublime 的 Ctrl+Shift+F(macOS 为 Cmd+Shift+F)只对已加载的项目目录起作用。如果只是零散打开几个 SQL 文件,面板里 Where 框显示 Open Files 或直接灰显,说明还没进项目模式——所有替换操作都只会“假装执行”,实际不扫任何文件。
正确做法是:File → Open Folder… 选中导出的 SQL 文件所在文件夹(比如 dump_20260904/),左下角出现路径、侧边栏有树形结构才算成功。Mac 用户若快捷键无反应,先去系统设置禁用 Spotlight 冲突。
Where 框填 “.” 才真正搜整个文件夹
很多人在 Where 框留空或填 ./,结果搜不到内容,甚至误扫全盘。Sublime 的 Where 是前缀匹配器,不是 shell 路径解析器:
-
.(仅一个英文点)= 整个已加载项目目录 -
./sql/**/*.sql= 错误写法,./会被当字面量前缀,可能匹配不到任何文件 -
dump_20260904/= 可行,但依赖文件夹名精确匹配,不如.稳定 - 想排除备份文件:填
., -backup.sql, -*.bak(逗号分隔,减号排除)
正则替换必须手动点 .* 图标,且括号、点号要转义
数据库导出文本常含 INSERT INTO、VALUES (1, 'abc', NULL) 这类结构,想批量改字段值或清理注释,必须开正则。但 Ctrl+Shift+F 面板的正则开关是独立的——不点右下角 .* 图标(变蓝才算激活),你写的 \d+、NULL、\. 全当普通字符串处理。
常见误操作:
- 查
console\.log却漏掉反斜杠 → 实际搜的是console.log,可能命中 SQL 字符串里的foo.bar - 查
VALUES $$.*?$$却没开. matches newline→ 跨行的VALUES (1,'abc')就漏掉 - 想把
user_id改成user_id_old,用\buser_id\b→ Sublime 的\b把下划线当单词字符,user_id_old也会被匹配
更稳写法:(?,或限定上下文加空格前缀 <code> user_id + 勾选 Whole Word。
Replace All 后必须手动 Save All,否则全丢
点完 Replace All,所有目标文件标签页出现星号 * 是正常现象——Sublime 只把变更缓存在内存,**不会自动写入磁盘**。关掉窗口、崩溃、甚至切到其他应用再回来,只要没保存,改动就彻底消失,且没有跨文件撤销历史可回溯。
必须执行:File → Save All,或快捷键:Ctrl+K 然后 Ctrl+B(Windows/Linux),Cmd+K 然后 Cmd+B(macOS)。大文件(>10MB)可能被跳过,注意右下角编码是否为 UTF-8;GBK 编码的导出文件得先右键转码再操作。
最后提醒一句:SQL 文本里常混着字符串字面量和注释,比如 UPDATE users SET name = 'user_id'; —— 直接全局替 user_id 会连字符串一起改。这种场景,宁可分步、加上下文约束,也别图快硬上。











