Sublime中Ctrl+H替换需手动开启右下角.*正则开关,否则d、 等被当字面字符;匹配字面符号需转义,捕获组用()并引用$1,单词边界防误替,s含换行需注意空行删除逻辑。

Sublime 中 Ctrl+H 替换框默认不启用正则,必须手动点开
很多人输完查找内容、替换内容后直接点 Replace All,结果没生效——根本原因是正则开关没打开。这个按钮在替换面板右下角,图标是 .*,点击后变蓝才表示正则已激活。不点它,d、s、^ 这些全当普通字符处理,毫无作用。
常见错误现象:
想换行结果替换成两个字符「」和「n」; 被字面替换而非制表符;\ 写成单反斜杠直接报错。
- Windows/Linux 用
Ctrl+H,macOS 用Cmd+H打开替换面板 - 务必点击右下角
.*图标(或按Alt+R切换) - 若需匹配字面意义的
.、+、?等,得写成.、+、?
匹配换行和空白字符要用
、 、s,但注意 s 包含
想把多行文本合并成一行?别用
—— Sublime 基于 PCRE,统一用
表示换行(无论文件是 Windows 还是 Unix 换行符)。想删空行?用 ^s*$
,但要注意末尾的
是真正要删掉的换行符,不是匹配的一部分。
性能提示:s 会匹配空格、制表符、换行符、回车符、垂直制表符、换页符,比单独写 [
] 更简洁,但若只想匹配空格和制表符,用 [ ] 更精准、更安全。
- 替换所有换行符为空格:
Find:→Replace:(一个空格) - 删空行(含只有空白的行):
Find:^s*$→Replace:空 - 匹配中文字符之间的空格(避免误伤英文单词内空格):
[u4e00-u9fa5]s+[u4e00-u9fa5]
$1、$2 引用捕获组,但括号必须用 ( 和 ) 转义
Sublime 的正则引擎对字面括号要求严格:普通括号 () 是元字符,要匹配字面的 ( 或 ),必须写成 ( 和 )。反过来,想做分组捕获,就得用未转义的 ()。
通过 SSH 隧道从 Android 设备在互联网上对 Windows PC 实现完整远程控制的设置与使用指南,适用于远程桌面访问、安全 RDP 等。
典型场景:把 func(arg1, arg2) 改成 func{arg1, arg2}。如果写成 func(.*?),那只是匹配,没法提取内容;得写 func((.*?)),再在替换栏写 func{$1} 才行。
- 错误写法:
Find:func(.*?)→ 无法捕获,$1为空 - 正确写法:
Find:func((.*?)),Replace:func{$1} - 多个捕获组:
Find:(d{4})-(d{2})-(d{2})→Replace:$3/$2/$1(转成 DD/MM/YYYY)
批量改函数名或变量名时,用 避免子串误匹配
搜 user 想替换成 account,结果把 username 也干掉了——这是没加词边界锚定。Sublime 支持 (单词边界),它匹配的是「字母/数字/下划线」与「非字母数字下划线」之间的位置,不消耗字符。
注意: 对中文无效(中文字符不属于 w),所以处理中英文混排时,得组合使用,比如 (? 更稳妥;但多数纯英文项目,<code>user 就够用。
- 安全替换变量:
Find:user→Replace:account - 匹配带下划线前缀的私有变量:
Find:_user_(注意_属于 w,所以依然生效) - 排除注释里的误匹配?Sublime 本身不支持排除语法域,得靠人工确认或先用
Ctrl+Shift+F全局搜索过滤上下文
正则替换真正难的不是语法,而是每次替换前得想清楚:这个模式会不会跨行?有没有隐藏空白?是否该用懒惰匹配?.* 很方便,但往往太贪心,一匹配就到文件末尾——这时候 .*? 或更具体的字符集才是解药。

















