按 ctrl+h 或 cmd+h 呼出查找替换面板,需点击右下角 .* 按钮启用正则;find 支持正则,replace 仅支持 $1 等捕获组引用;注意文件编码与 unicode 兼容性,复杂正则在大文件中可能卡顿。

怎么打开 Sublime 的正则查找替换面板
按 Ctrl+H(Windows/Linux)或 Cmd+H(macOS)直接呼出「查找与替换」面板,比菜单点进去快得多。默认不启用正则,得手动点右下角的 .* 按钮——这个按钮没亮起来就别指望 \d+ 能匹配数字。
常见错误现象:写了 \s+ 却什么都没找到,其实是忘了点 .*;或者点了但没注意当前文件编码是 GBK,而正则里用了 Unicode 字符(比如中文),结果匹配失败。
- 使用场景:批量清理空行、提取日志中的 IP、重命名变量名(需配合
Alt+Enter全选匹配项) - 参数差异:
Find输入框支持正则,Replace不支持正则语法,但支持$1、$2这类捕获组引用 - 性能影响:跨大文件(>10MB)用复杂正则(如嵌套量词
(a+)+)可能卡顿,建议先在小范围测试
常用正则写法和对应效果
Sublime 用的是 Boost regex 引擎,不支持 JS 那套 ? 这种 JavaScript 风格的断言,但基础能力够用。别硬套网上搜来的“万能正则”,得看它实际认不认。
比如想删掉每行末尾的空格和制表符,别写 [ \t]+$ 然后直接替换为空——得勾上 Wrap around 和 Regular expression,否则只处理光标以下部分。
-
^\s*:匹配行首空白(含空行),适合清理缩进前的冗余空格 -
"([^"]*)"→ 替换为'$1':把双引号全换成单引号,$1是括号捕获的内容 -
\bconsole\.log\([^)]*\):匹配完整console.log(...),\b防止误中myconsole.log - 注意:点号
.默认不匹配换行,要跨行匹配得加(?s)前缀,比如(?s)<!--.*?-->
替换时怎么保留部分内容(捕获组实战)
真正省时间的操作不是“全删”,而是“留一部分”。关键就是用括号 () 包住想留的片段,再在替换框里用 $1、$2 引用。
比如把 user_id: 123 改成 userId: 123,不能只搜 user_id ——那样会把 post_user_id 也改了。得写 \buser_id:\s*(\d+),替换填 userId: $1。
- 最多支持
$1到$9,别写$10,Sublime 不认 - 如果正则里用了非捕获组
(?:...),它不算数,不会生成$n - 想把路径
/api/v1/users/123提取 ID,用/api/v1/users/(\d+),替换留空就行,重点是用Alt+Enter全选后按Ctrl+Shift+P→ “Copy Selected Text” 快速提取
为什么有时候正则明明对了却没反应
最常被忽略的是作用域问题:Sublime 默认只在当前视图(当前标签页)生效,不会自动扫整个项目。而且「区分大小写」和「全字匹配」两个开关开着,会直接让 function 匹配不到 Function。
- 检查右下角三个小图标:
Aa(大小写)、\b(全字)、.*(正则)——任一关着都可能导致预期外行为 - 跨文件操作必须用
Ctrl+Shift+F呼出「全局查找」,那里也有正则开关,且支持指定文件类型(如*.js,*.ts) - 某些插件(如 Vintage 模式)会劫持
Ctrl+H,如果面板打不开,试试禁用插件排查
正则本身没问题,但开关没开、范围没选对、编码不一致,这三处漏一个,就白调半天。










