^正则替换需点亮右下角.*按钮,否则^为普通字符;锚定行首需用^和$,捕获组用$1引用;混合换行符或BOM会影响匹配,应先统一编码与换行格式。

用 ^ 正则替换最直接,但必须点亮右下角 .* 按钮
不启用正则模式时,^ 就是普通字符,搜不到任何行首位置。很多人输完 ^// 点全部替换,结果毫无反应——问题不在表达式,而在右下角的 .* 图标没点亮(变蓝才算生效)。确认方式:输入 \d+ 能高亮数字,说明正则已就绪。
- 只删行首
//:查找^//,替换留空 - 把行首
#换成##:查找^#,替换为## - 想跳过已有前缀的行?用负向先行断言:
^(?!// )只匹配没加注释的行
批量替换成不同内容?得靠捕获组 + $1 引用
单纯 ^ 替换只能加固定字符;如果目标行本身有结构(比如日志带时间戳、路径含层级),就得提取原始内容再重组。例如把 src/js/main.js 批量改成 dist/js/main.min.js:
- 查找:
^src/(\w+)/(\w+)\.js$(注意勾选.*和关闭. matches newline) - 替换:
dist/$1/$2.min.js - 关键点:
^和$锚定整行,括号捕获中间部分,$1、$2按序还原
为什么 Ctrl+Shift+L + Home 不适合“替换”,只适合“添加”
多光标操作本质是“在光标位置插入”,不是“替换当前位置字符”。按 Home 后光标停在行首,输入会覆盖第一个字符(如原为 let,输 const 就变成 constet),而非整体替换。真要逐行替换首字符,必须用正则:
- 删掉行首字母(如统一去开头的
a):^a→ 替换为空 - 确保只换第一个字符,不误伤后续相同字母:别用
a(无锚点),必须带^ - 某行开头是 BOM(
)?^会卡在 BOM 后,先执行File → Save with Encoding → UTF-8清掉 BOM 更稳
混合换行符(\r\n 和 \n 共存)会导致部分行漏替换
^ 在 Sublime 中默认逐行生效,但前提是换行符边界清晰。若文件里 Windows 和 Unix 换行混用,^ 可能无法识别某些行的起始位置,尤其在 Git 日志或拼接文本中常见。
- 操作前先统一格式:按
Ctrl+Shift+P→ 输入Set Line Endings: Unix→ 回车 - 别依赖
\r\n手写换行:Sublime 的\n在正则替换中会自动适配当前文件换行格式 - 空行也会被
^匹配——这是设计如此,不是 bug;若不想处理空行,改用^(?=\S)(只匹配非空行开头)
Find All 预览匹配范围。尤其是用 ^. 这类宽泛表达式时,可能意外命中注释行或字符串开头,一按 Replace All 就不可逆。

















