默认的Where输入框值"./"只搜当前目录,不递归子目录;需写成"./src/*/.js"才能匹配src下所有JS文件,单星号或无通配符将遗漏子目录内容。

Ctrl+Shift+F 为什么搜不到子目录文件?
默认的 Where 输入框值是 ./,它只表示当前目录,**不自动递归子目录**。想搜 src 下所有 JS 文件,必须写成 ./src/**/*.js(双星号 ** 才启用递归)。
常见错误现象:搜了几十个文件却漏掉 src/utils/ 里的内容 → 八成是用了单星号 ./src/*.js 或干脆没写路径通配。
- 排除目录必须用减号前缀:
-./node_modules -./dist -./build - 多个后缀要逗号分隔:
./src/**/*.ts,./src/**/*.tsx(不支持*.{ts,tsx}) - 如果项目没通过 File → Open Folder… 打开根目录,
Ctrl+Shift+F面板会灰掉或仅搜当前文件
正则模式开了但匹配失败?先看 .* 图标亮没亮
Ctrl+F 或 Ctrl+H 打开查找面板后,\d+、^$、console\.log\(.*?\) 这些全都不生效——除非你手动点击了面板右下角(或左下角,依版本而定)的 .* 图标,让它变蓝。
快捷键 Alt+R 可切换,但图标状态更可靠;没点亮时,$1 在替换框里会被原样输出,不是捕获组引用。
- 删空行别用
^\s*$:它会误吞换行符,改用^[ \t]*$更安全 - 提取括号内容,优先用
\(([^)]+)\)而非\((.*?)\),避免跨行或嵌套时贪婪匹配破界 - 匹配单词如
id却改掉了user_id?关掉正则后点\b图标(全词匹配),或手动写\bid\b
Replace All in Files 为什么卡死或误改?
Sublime 不跳过二进制文件,默认硬读 package-lock.json、图片、压缩包,内存暴涨甚至无响应。
真正有效的防护不是靠运气,而是三层过滤:
- 在
Where显式限定后缀:./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,看右下角数字是否合理;上千匹配项出现,先停手检查正则或路径。
怎么批量改多个匹配项而不逐个点?
想把所有 log(…) 改成 console.log(…),又不想手动点几十次 Replace?用多光标编辑链式操作:
- 先在 Find 面板输入
log\(([^)]+)\),点亮.*,点Find All - 再按
Ctrl+Alt+G(Windows/Linux)或Ctrl+Cmd+G(macOS),所有匹配位置变成可编辑多光标 - 直接输入
console.log($1),回车即完成全部替换
注意:Ctrl+D 是逐词扩展选中,不走正则、不跨文件、易误选子串,不适合这种场景。多光标批量改的前提是——先真正执行了一次 Find All,否则快捷键无效。
最常被忽略的一点:改完不会自动保存。必须手动按 Ctrl+K 然后 Ctrl+B(全部保存),或挨个点文件标签页上的保存按钮,否则重启后全丢。

















