Sublime Text全局替换需用Ctrl+Shift+F、填“.”指定项目、启用.*正则、手动Save All;默认不跨文件、不认正则、不自动保存,易误改变量或路径,操作前须Git备份。

Sublime Text 的查找替换不是“输完就点 Replace All”就能安全收工的事——它默认不跨文件、不认正则、不自动保存,直接硬上大概率改错 console.log 里的字符串、user_id 变量名,甚至把路径 src/utils.js 里的下划线也干掉。
Ctrl+H 只改当前文件,跨文件必须用 Ctrl+Shift+F
按 Ctrl+H(Windows/Linux)或 Cmd+Option+F(macOS)打开的面板,作用域仅限当前标签页。哪怕你已打开整个项目,没点 Ctrl+Shift+F 就永远搜不到其他文件。
-
Ctrl+Shift+F(Windows/Linux)或Cmd+Shift+F(macOS)才是「Find in Files」唯一入口,面板右下角显示路径(如~/my-project/)才算真正进入项目模式 -
Where框填.表示整个项目;留空 ≠ 全项目,而是只搜当前已打开的标签页 - 排除
node_modules:写成., -node_modules/, -dist/(注意统一用正斜杠/,Windows 上也一样) - 点
Find预览匹配结果前别急着Replace All——尤其要确认是否命中目标文件,比如src/api/下的.ts文件
正则模式必须手动开启,.* 图标变蓝才算生效
右下角 .* 图标没亮,^、d、 全当字面量处理。写好 href="([^"]*)" 却搜不到链接?八成是模式没开。
- 快捷键比点图标快:
Ctrl+H后立刻按Alt+R(Windows/Linux)或Cmd+Alt+R(macOS) - 捕获组引用只认
、,不支持$1或${1};写成$1就原样输出字符 -
.默认不匹配换行符;跨行匹配必须加(?s)前缀,例如(?s)start(.*?)end - 中文匹配别用
w(它不认汉字),改用[u4e00-u9fa5]或(?u)p{Han}
替换后不会自动保存,关掉窗口就丢修改
点完 Replace All,所有改动都在内存里。标签页右上角的星号 * 是脏状态提示,不是已保存信号。
- 必须手动执行
File → Save All,或快捷键:Ctrl+K松开后按Ctrl+B(Windows/Linux),macOS 是Cmd+K→Cmd+B - 未保存时崩溃或误关标签页,修改直接丢弃——Sublime 没有跨文件撤销历史
- 替换前务必
git commit -m "before global replace";出错时git checkout .三秒回滚 - 大文件(>10MB)可能被跳过,检查右下角编码是否为
UTF-8;非 UTF-8 文件(如 GBK)需先右键转码再操作
删空行、提路径、换引号这些高频操作怎么写对
看似简单的任务,最容易因换行符逻辑和引用语法翻车。比如 ^s*$ 不是删空行,是吞掉换行本身,导致行边界错乱。
- 删「纯空行」(不含空格/Tab):查找
^$,关闭. matches newline,替换留空 - 删「含空格/Tab 的空行」:查找
^[ ]*$,同样关闭. matches newline - 提取双引号内路径:
url("([^"]*)")→ 替换为background-image: url("/static/")(注意括号和点号要转义) - 双引号变单引号:
"([^"]*)"→'$1';但若含转义引号(如"He said "hi""),得升级为"((?:[^"\]|\.)*)"
真正麻烦的从来不是怎么写正则,而是 Sublime 对换行、引用、引擎模式的隐式约束——每次替换前花 10 秒验证 Ctrl+F 是否真能命中目标文本,比事后调试快十倍。


















