ctrl+shift+f是唯一跨文件查找替换快捷键;必须在项目模式下使用,where填“.”才搜整个项目,正则替换用$1且需(?s)跨行,替换后须手动save all。

Ctrl+Shift+F 是唯一能跨文件查找替换的快捷键
别试 Ctrl+F 或 Ctrl+H,那俩只作用于当前文件。按了没反应?大概率是快捷键被插件劫持了——打开 Preferences → Key Bindings – User,搜 "ctrl+shift+f",删掉冲突项;或者进 Key Bindings – Default 确认原生绑定还在:{"keys": ["ctrl+shift+f"], "command": "show_panel", "args": {"panel": "find_in_files"}}。
Where 框填 “.” 才算真正搜整个项目
留空 ≠ 全项目,它等价于“只搜当前已打开的标签页”。真正表示项目根目录的是单个英文点:.(不是 ./,也不是 ./src)。路径必须用正斜杠 /,即使在 Windows 上也一样。
- 只搜 TypeScript 业务代码:
./src/**/*.ts, ./tests/**/*.ts - 排除
node_modules和dist:., -node_modules/, -dist/ - 搜某类文件但怕误触压缩包:
./src/**/*.js, -./src/**/*.min.js
正则替换时捕获组用 $1,不是 \1,且 . 不跨行
Sublime 的替换语法不认 Python 风格的 ,必须写 。更关键的是:默认情况下 . 不匹配换行符,foo.*bar 永远找不到跨两行的内容。
- 要跨行匹配,得加
(?s)前缀:(?s)start.*end - 改
getUser(id)为getUser({ id }):
查找:getUser$$([^)]+)$$
替换:getUser({ $1 }) - 删独立的
console.log行(不碰注释或字符串里):
查找:^[ ]*console.log$$[^)]*$$;[ ]*$
替换:留空
Replace All 后不会自动保存,Git commit 是保命底线
点了 Replace All,所有改动都在内存里,关掉未保存的标签页就彻底丢弃。Sublime 没有跨文件撤销历史。
- 替换前务必执行:
git add -A && git commit -m "before global replace" - 替换后立刻按
Ctrl+K松开,再按Ctrl+B(即“全部保存”) - 右下角状态栏编码不是
UTF-8?先转码再操作,否则可能出乱码
最常被跳过的其实是范围控制——没加 -node_modules/ 就点 Replace All,改完发现第三方库的源码也被动了,这种错误没法靠 Ctrl+Z 补救。











