ctrl+shift+f打不开是因插件劫持快捷键,需检查并删除key bindings–user中冲突项;“整个项目”搜索应填单个英文点“.”;正则替换需激活.*图标、用$1引用捕获组、跨行加(?s)前缀;replace all后需手动保存,且应关闭index_files防卡顿。

Ctrl+Shift+F 打不开?先查快捷键是否被插件劫持
按了没反应,大概率不是 Sublime 坏了,而是某个插件偷偷重绑定了 ctrl+shift+f(Windows/Linux)或 cmd+shift+f(macOS)。打开 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"}}。重启仍无效?临时禁用所有插件排查。
Where 字段填什么才真正搜整个项目?
Where 留空 ≠ 全项目,它只搜当前已打开的标签页;填 ./ 或 ./src 也不对——Sublime 不按 shell 路径解析,而是前缀匹配器。真正表示“整个项目”的写法是单个英文点:.(不是 ./,也不是 ./src)。
更安全的做法是显式限定范围:
- 只搜 TypeScript 业务代码:
./src/**/*.ts, ./tests/**/*.ts(逗号分隔,不支持空格) - 排除干扰目录:
., -node_modules/, -dist/, -build/, -*.min.js(统一用正斜杠/,大小写敏感) - 搜所有已打开但未保存的标签页?必须手动填:
open_files
正则替换总出错?盯住 .* 图标、$1 和换行符
Ctrl+Shift+F 面板里的 .* 图标必须点成蓝色(激活),灰色=关闭——没开时写 就是字面输出,不会被解析。捕获组引用必须用 ,不是 ;括号、点号等元字符必须转义,例如 console\.log$$[^)]+$$。
. 默认不匹配换行符,想跨行必须加 (?s) 前缀,否则 foo.*bar 永远找不到 foo\nbar。删独立的 console.log 行,推荐用:^[ \t]*console\.log$$[^)]*$$;[ \t]*$,而不是 ^\s*$(\s 会吞掉换行符,破坏文件结构)。
Replace All 后文件没保存?这不是 Bug,是设计
Sublime 不会自动保存被修改的文件——所有改动都在内存里。关掉未保存的标签页,修改直接丢弃;没有跨文件撤销历史,点了 Replace All 就等于把所有文件变成“脏状态”。
操作前务必执行:git add -A && git commit -m "before global replace";替换后立刻按 Ctrl+K 松开,再按 Ctrl+B(即“全部保存”快捷键)。别依赖右上角星号 * 提示——批量操作后几十个标签页,没人能盯全。
最容易被忽略的是 index_files 设置:项目含大 node_modules 时,不关它,搜索会卡死或漏文件。在 Preferences → Settings 里加一行:"index_files": false,必要时还得清缓存目录。











