ctrl+shift+f(win/linux)或cmd+shift+f(macos)是sublime text唯一支持跨文件、可过滤、带预览的全局搜索入口;需处于项目模式(状态栏显示路径、侧边栏为树形目录),路径输入框填“.”才搜全项目,正则替换需分别启用查找与替换面板的.*开关,replace all后须手动save all或git回滚。

Ctrl+Shift+F(Win/Linux)或 Cmd+Shift+F(macOS)不是“可能有效”的快捷键,而是唯一能触发真正全局搜索的入口——其他任何方式(右键菜单、Ctrl+H、插件)都做不到跨文件、可过滤、带预览的批量替换。
Ctrl+Shift+F 灰显或按了没反应?90% 是项目没加载
Sublime 的全局搜索面板根本不会启动,除非它认出你处在「项目模式」里。这不是玄学,有两条硬指标:
- 左下角状态栏必须显示类似
~/my-project/的路径,只显示文件名或空白 → 没进项目 - 侧边栏必须是树形目录结构,只有顶部标签页列表 → 仍是单文件模式
- 正确做法:关掉所有标签页 →
File → Open Folder…→ 选中项目根目录(比如src上一级)→ 等右下角Indexing…消失再操作 - Mac 用户额外注意:
Cmd+Shift+F常被系统 Spotlight 占用,需在「系统设置 → 键盘 → 快捷键 → Spotlight」里禁用
Where 输入框填什么才真正搜全项目?不是留空,也不是 ./
Where 是路径前缀匹配器,不是 shell glob,也不是正则表达式——填错一个字符,就漏掉大半文件。
- 搜整个项目:必须填
.(单个英文点),./或留空都只搜已打开的标签页 - 只搜
src/下所有 JS 文件(含子目录):填src/**/*.js(双星号 ** 才递归) - 排除
node_modules和dist:写成., -node_modules/, -dist/(逗号分隔,减号开头) - Windows 上也必须用正斜杠
/;路径区分大小写:./SRC≠./src
正则替换 $1 不生效?三个开关要分别点蓝
查找和替换面板的正则开关是独立的,.* 图标必须为蓝色才真正启用。灰色 = 字面量匹配,$1 就是原样输出。
- 查找框写
console\.log$$([^)]+)$$,但.*没点蓝 → 只当普通字符串,找不到任何console.log() - 替换框写
$1,但替换面板的.*是灰色 → 输出字面量$1,不是捕获内容 - 跨行匹配必须加
(?s)前缀,例如(?s)"content": "(.*?)";否则foo.*bar永远找不到foo\nbar - 括号、点号等元字符必须手动转义:
getUser$$id$$才能匹配getUser(id)
Replace All 后文件没保存?这不是 Bug,是设计
所有替换结果都存在内存里,不触发修改标记,也不自动保存。关掉未保存的标签页,改动直接丢弃。
- 务必执行
File → Save All,或快捷键Ctrl+K松开后再按Ctrl+B - 标签页右上角出现星号
*是唯一视觉提示,但没人盯着每个标签看 - 最稳妥做法:替换前先
git commit -m "before global replace";出错后git checkout .三秒回滚 - 替换后建议用原字符串再搜一次,确认无遗漏——尤其注意
node_modules是否意外被包含











