ctrl+h仅替换当前文件,跨文件需ctrl+shift+h或find in folder;替换前须确认范围、预览结果、统一换行符,正则需转义特殊字符并慎用$1引用。

怎么用 Ctrl+H 做基础批量替换?
Sublime Text 的批量替换默认走的是「当前文件」范围,不是全项目——这点很多人误以为开个文件夹就能全局替,结果只改了当前 tab。Ctrl+H(Windows/Linux)或 Cmd+H(macOS)调出替换面板后,注意右下角的「In Selection」开关:没勾选就是全文;勾选了就只在你手动选中的文本块里替换。
- 想替换所有匹配项,务必点击「Replace All」,而不是单次「Replace」
- 区分大小写、全字匹配、正则模式这些开关都在面板左下角,
Alt+R快速切换正则模式(⚠️开启后.、*、\d等才生效) - 如果替换后内容乱码或格式错位,大概率是开启了正则但没转义特殊字符,比如想替文字
foo.bar却写了foo.bar(.被当通配符),应写成foo\.bar
如何跨多个文件批量替换?用 Ctrl+Shift+H
Ctrl+Shift+H 是真正意义上的「多文件替换」入口,但它默认只搜当前已打开的文件。要搜整个文件夹,得先在侧边栏右键目标文件夹 → 「Find in Folder…」,或者直接按 Ctrl+Shift+F 调出「Find」面板,输入关键词,再点「Replace」标签页——这时「Where」字段会自动填入路径,且支持 glob 模式,比如:src/**/*.js 或 *.py。
- 「Where」里路径不能带中文空格或括号,否则搜索失败;建议用英文路径或拖拽文件夹到输入框自动生成安全路径
- 替换前务必点「Find All」预览命中的文件和行数,避免误操作;Sublime 不提供替换前备份,一旦「Replace All in Files」执行就不可撤回
- 若提示「No files found」,检查是否漏填了文件扩展名过滤,或当前文件夹未被 Sublime 索引(比如位于隐藏目录、软链接路径)
正则替换怎么写才不翻车?几个高频场景示例
正则是进阶替换的核心,但也是最容易写出「看似对、实际错」表达式的部分。Sublime 用的是 Python 的 re 引擎(但不支持 (?P<name>...)</name> 这类命名组),所以写法要克制。
- 把所有
console.log(...)替换成debugger;:查找console\.log\([^)]*\);?,替换为debugger; - 提取 HTML 标签里的文本(如
<p>hello</p>→hello):查找]+>([^]+>,替换为$1(注意用$1,不是\1) - 删除空行:查找
^\s*$\n,替换为空(需开启正则 + 多行匹配);但小心:开头结尾的空行可能因换行符类型(CRLF/LF)不一致而漏掉
为什么替换后缩进/换行乱了?关键在换行符和空白处理
Sublime 默认按当前文件的换行符(\n 或 \r\n)做替换,但你在正则里写的 \n 可能不匹配实际文件的换行格式,导致替换后段落粘连或断行异常。
- 查看当前文件换行符:状态栏右下角显示「LF」或「CRLF」;需要统一时,菜单栏 → 「File」→ 「Line Endings」→ 选对应格式
- 用
\R替代\n更稳妥(Sublime 自定义元字符,可匹配任一换行符),比如删空行可写^\s*\R - 替换含缩进的代码块时,别直接复制带 Tab 的字符串去替换,容易因 Tab 宽度设置不同(
detect_indentation开关影响)造成错位;建议用\t显式表示 Tab,或关闭「Indentation → Detect Indentation」后再操作











