ctrl+shift+f无反应是因快捷键被插件或系统占用;where填“.”才搜整个项目;正则需点蓝.*图标、用$1引用捕获组、跨行加(?s);replace all后须手动save all。

Ctrl+Shift+F 按了没反应?先查快捷键是否被劫持
这不是 Sublime 坏了,而是快捷键大概率被插件或系统占用了。Windows/Linux 用户按 Ctrl+Shift+F、macOS 用户按 Cmd+Shift+F,面板不弹出,90% 是因为快捷键绑定被覆盖。
打开 Preferences → Key Bindings – User,搜 "ctrl+shift+f" 或 "cmd+shift+f",删掉所有匹配项;再确认 Key Bindings – Default 里存在原生绑定:{"keys": ["ctrl+shift+f"], "command": "show_panel", "args": {"panel": "find_in_files"}}。macOS 还要检查系统设置里 Spotlight 是否占用了 Cmd+Shift+F,必须禁用。
Where 字段填什么才能真正搜整个项目?
填空 ≠ 全项目,它等价于“只搜当前已打开的标签页”,极易漏改。真正表示整个项目的写法只有一个:.(单个英文点)。
-
.:整个项目根目录(必须已通过File → Open Folder…加载) -
./src/**/*.js:只搜src/下所有.js文件(双星号才递归) -
., -node_modules/, -dist/, -*.min.js:搜全项目但排除指定路径和文件(减号前缀,无空格,统一用/) -
open_files:只搜当前已打开且未保存的文件(不是*或all)
路径区分大小写:./SRC 和 ./src 是两个目录,写错就搜不到。
正则替换总出错?盯住 .* 图标、$1 和 (?s)
Sublime 的正则开关是面板级独立的:Ctrl+F、Ctrl+H、Ctrl+Shift+F 三处的 .* 图标必须各自点开——灰色 = 关闭,蓝色 = 生效。别信“Regular Expression”复选框,它不控制这个。
- 捕获组引用必须用
$1,不是\1 - 括号、点号等元字符必须手动转义,例如
console\.log$$[^)]+$$ -
.默认不匹配换行符,跨行匹配必须加(?s)前缀,如(?s)"content": "(.*?)" - 整行匹配要锁定边界:
^[ \t]*console\.log$$[^)]*$$;[ \t]*$
Replace All 后文件没变星号?这不是 Bug,是设计如此
Sublime 不会自动保存被修改的文件。所有改动都只是内存中的脏状态,关掉未保存的标签页,修改直接丢弃。没有跨文件撤销历史。
替换前务必执行:git add -A && git commit -m "before global replace";替换后立刻按 Ctrl+K 松开,再按 Ctrl+B(Windows/Linux)或 Cmd+K → Cmd+B(macOS)执行 Save All。否则改完等于没改。
最容易被忽略的是:Where 填错一个字符、.* 图标没点蓝、没做 Git 备份——这三件事任一出错,几万行代码的重构就可能白干甚至引入隐蔽 bug。











