Ctrl+H仅作用于当前文件,需手动开启Whole Word或正则边界防误替,Replace All后必须用Ctrl+K Ctrl+B保存全部,否则关闭即丢失。

Ctrl+H 打开的就是单文件替换面板,不是多文件
Sublime 默认的 Ctrl+H(Windows/Linux)或 Cmd+Option+F(macOS)打开的面板,作用范围天然限定在当前激活的文件。只要没点过面板右下角的 Where 按钮、也没手动填路径,就不可能误触其他文件。
常见错误是混淆了 Ctrl+Shift+F(多文件搜索)和 Ctrl+H:前者一按就弹出“在文件中查找”,后者才是纯文本替换。如果误用了 Ctrl+Shift+F,面板顶部会显示“Find in Files”,此时即使只改一个文件,也属于全局操作范畴,风险陡增。
- 确认当前面板标题是“Replace”而非“Find in Files”
- 面板右下角没有出现路径列表或
<project>字样 - 替换后所有改动仅影响当前 tab,关闭未保存即丢弃
替换前必须手动开启 Whole Word 或正则边界,否则容易误替
比如想把 id 替成 userId,直接输 id 会把 identity、user_id、hidden 全干掉。Sublime 的 \b 对下划线支持不一致,\bid\b 在某些上下文里仍会匹配 _id。
更稳的做法是结合上下文写正则,或者用面板上的开关:
- 勾选
Whole Word(快捷键Alt+W),它比\b更可靠,能避开user_id这类带下划线的词 - 需要精确控制时,用
(? 替代 <code>\bid\b,明确排除前后为单词字符的情况 - 若目标在引号内,直接写
"id"或'id',比泛匹配安全得多
Replace All 后内容不会自动保存,关掉就没了
这是 Sublime 最反直觉的设计:所有替换结果都存在内存里,Replace All 点完≠生效。哪怕你看到文件内容变了,标签页右上角出现星号(*),也得手动保存。
只按 Ctrl+S 不够——它只保存当前 tab;批量替换涉及多个文件时,必须用 Ctrl+K 松开后再按 Ctrl+B(Windows/Linux)或 Cmd+K → Cmd+B(macOS)执行 Save All。
- 没保存前,切换到其他应用再切回来,修改依然在,但崩溃或断电就彻底丢失
- Git 用户建议替换前先
git add -p或git stash,避免误操作污染工作区 - 面板里点击
Replace(单次替换)后,光标会自动跳到下一个匹配项,这时按Enter可快速继续,比点按钮快
正则替换里捕获组要用 $1,不是 \1
Sublime 的替换语法不兼容 PCRE 常见写法:\1 是字面量,不会被解析为捕获内容;必须用 $1、$2 才能引用分组。
例如把 console.log(x) 改成 console.debug(x):
- 查找填:
console\.log$$([^)]+)$$(括号和点要转义) - 替换填:
console.debug($1)(注意是$1,不是\1) - 跨行匹配需加
(?s)前缀,foo.*bar默认不匹配换行,(?s)foo.*bar才行
真正麻烦的不是语法本身,而是忘了保存,或者误以为 Replace All 已落地——这两点卡住的人,比写错正则的多得多。

















