Ctrl+Shift+F打不开是因为未进入项目模式;必须用File→Open Folder加载根目录使状态栏显示路径,Where填“.”才全局搜索,替换后需手动Save All。

Ctrl+Shift+F 打不开?先确认项目已加载
Sublime 的全局查找替换面板(Ctrl+Shift+F)默认只在“项目模式”下才真正可用。如果左下角状态栏没显示类似 ~/my-project/ 的路径,而是显示 Plain Text 或空内容,说明你只是打开了单个文件,不是项目——此时面板会灰显或仅搜“已打开的标签页”。必须通过 File → Open Folder… 重新选中整个项目根目录。临时用 Project → Add Folder to Project… 不够,得确保路径出现在状态栏。
Where 字段填什么才扫全项目?别信“留空”
Where 不是路径补全框,是 Shell 风格过滤表达式。留空 ≠ 全项目,它等价于“只搜当前已打开的标签页”。真正扫整个项目,必须填:.(单个英文点)。其他常见写法:
-
./src/**/*.js:只搜src下所有子目录的 JS 文件(双星号**才递归) -
., -node_modules/, -dist/, -build/:搜整个项目,但排除这些目录(减号开头,斜杠结尾) -
*.py:只搜当前目录下的所有 Python 文件(不递归)
Windows 用户也必须用正斜杠 /;路径区分大小写:./SRC 和 ./src 是两个不同目录。
正则替换总出错?盯住 $1、括号转义和 (?s)
Sublime 正则引擎是 PCRE 风格,但替换语法是自研的: 引用捕获组,不是 ;默认不匹配换行符;括号、点号等元字符必须手动转义。
- 启用正则:必须点右下角
.*图标(变蓝才算激活),或按Alt+R - 把
getUser(id)改成getUser({ id }):查找填getUser$$([^)]+)$$(括号要转义),替换填getUser({ $1 }) - 跨行匹配(如
foo\nbar):查找前加(?s),即(?s)foo.*bar - 删掉整行
console.log:查找^[ \t]*console\.log$$[^)]*$$;[ \t]*$,替换留空(注意点号和括号都转义了)
Replace All 后文件没保存?这不是 Bug,是设计
Sublime 不会自动保存被修改的文件——所有改动都在内存里。关掉未保存的标签页,修改直接丢弃。操作后必须手动执行:File → Save All,或快捷键 Ctrl+K 后接 Ctrl+B(Windows/Linux)/Cmd+K 后接 Cmd+B(macOS)。标签页右上角出现星号 * 就表示有未保存更改。
最常被忽略的一点:Git 备份不是可选项。哪怕只改一个变量名,也建议先 git add -A && git commit -m "prep for rename"。因为 Sublime 没有历史快照,误替 user_id 成 user_name 这种事,5 秒内就能发生。










