正则替换是给多行文本每行末尾加HTML标签的唯一稳解;用$匹配行尾、Replace with填标签即可,Wrap with Abbreviation因包裹整块内容而不适用。

想给多行文本每行末尾都加同一个HTML标签?别用 Wrap with Abbreviation,它只会包成一个块——正则替换才是唯一稳解。
为什么 Wrap with Abbreviation(Ctrl+Shift+G)不适用多行追加
Emmet 的 Wrap with Abbreviation 本质是「包裹选区」,不是「逐行追加」。当你鼠标拖选多行时,Sublime 创建的是矩形选区,Wrap with Abbreviation 会把全部内容塞进一对标签里,比如:
line1 line2 line3
→ 变成:<div>line1\nline2\nline3</div>,而不是你想要的每行一个
</div></p> <ul> <li>遇到空行或首尾空格时直接报错:<code>Emmet: No content to wrap
div 会被当成包裹指令,不是追加指令用正则 $ 匹配行尾,一步追加闭合标签
这是最直接、无依赖、跨语法通用的方法,全程在 Find → Replace 面板操作:
立即学习“前端免费学习笔记(深入)”;
将调研报告、方案对比、数据分析、需求梳理、会议纪要、设计说明、代码评审、学习笔记等任务产物输出为可在浏览器直接打开的单文件 HTML,替代 Markdown 作为最终交付物。Markdown 在信息密度、视觉清晰度和可分享性上已跟不上 AI 产物的丰富度,HTML 能同时承载排版、表格、SVG 等。
- 按
Ctrl+H(Windows/Linux)或Cmd+H(macOS)打开替换面板 - 勾选左下角的
.*(启用正则表达式) -
Find what填$(严格匹配每行末尾) -
Replace with填你要加的标签,例如:</div>或<br /> - 点
Replace All,立刻生效
注意:<br> 要写成 <br /> 才符合 XHTML 或 strict HTML 规范;自闭合标签漏斜杠会导致校验失败。
批量加成对标签:分两轮,用 ^ 和 $ 配合
如果目标是每行都套上完整标签(如 <p>xxx</p>),不能靠一次正则完成,必须拆开:
- 第一轮:在行尾加闭合标签
Find what:$Replace with:</p> - 第二轮:在行首加开始标签
Find what:^(匹配每行开头)Replace with:<p>
若需动态属性(比如每行开头是 URL,要转成 <a href="xxx">xxx</a>),就得用捕获组:Find what: ^(.+)$Replace with: <a href="$1">$1</a>
容易被忽略的细节:语法模式和空格陷阱
正则方法虽不依赖语法,但仍有两个隐形坑:
- 如果文件当前是
Plain Text模式,$仍能工作,但 Sublime 有时会对含 BOM 或混合编码的文件误判行尾,导致最后一行没被替换——建议先用File → Reopen with Encoding → UTF-8 - 行尾有不可见空格(如全角空格、NBSP)时,
$会匹配到空格之后,导致标签加在空格后面,视觉上“飘”了一截——可先用Ctrl+H→Find what:[ \t]+$→Replace with: 空 → 清掉行尾空格再操作
真正麻烦的从来不是怎么加,而是加完发现某几行没对齐、标签嵌套错位、或者属性值跑到了标签外面——那大概率是原始文本里混了缩进不一致的换行符或隐藏字符,得先清理再正则。


















