直接用正则替换最稳:Ctrl+H打开面板,勾选.*启用正则,Find what填$,Replace with填目标标签(如</div>),点Replace All即可每行末尾统一加标签,不依赖语法、不卡空格、不误包多行。

选中多行后怎么统一在行尾加标签?
直接用正则替换最稳,不依赖语法模式、不挑插件、不卡多行空格。原生命令 wrap_with_tag 和 Emmet 的 Wrap with Abbreviation 都要求「整行选中内容必须是连续文本」,一旦某行首尾有空格或空行,就容易漏包、错位甚至报错 Emmet: No content to wrap。
操作分三步,全部在 Find → Replace 面板里完成:
- 按
Ctrl+H(Windows/Linux)或Cmd+H(macOS)打开替换面板 - 勾选左下角的
.*(正则表达式)按钮 - 在
Find what输入$(代表行尾),Replace with输入你要加的标签,比如或" />
点 Replace All 就生效。注意:如果目标是闭合标签(如 ),别漏掉斜杠;如果是自闭合标签(如
<br/>),确保写全。
为什么不用 Wrap with Tag 或 Emmet?
这两个功能本质是「包裹选区」,不是「追加到行尾」。当你用鼠标拖选多行时,Sublime 实际创建的是一个「矩形选区」,而 wrap_with_tag 只会把整个矩形当做一个块来包——结果是所有行被塞进一对标签里,而不是每行末尾各加一个。
立即学习“前端免费学习笔记(深入)”;
Emmet 的 Wrap with Abbreviation(默认快捷键 Ctrl+Shift+G)更依赖上下文:它只在当前语法为 text.html 或 source.js 时才识别缩写,且遇到换行符多、缩进不一致的选区时行为不可控,常见现象是只处理第一行,或把换行符也当成内容一起包进去。
使用 PptxGenJS 和 Python 解析,将结构化的 HTML/CSS 幻灯片内容转换为原生、可编辑的 PowerPoint(.pptx)演示文稿。
所以,想给「每行末尾」加东西,就别走包裹路线,正则才是直球解法。
批量加带属性的标签(比如 <a href="https://www.php.cn/link/263b1243ca2dbeb358777ceabc4a2e4c"></a>)怎么搞?
不能靠一次正则搞定两端,得拆成两轮:
- 第一轮:在行尾加闭合标签,
Find what填$,Replace with填 - 第二轮:在行首加开始标签,
Find what填^(行首),Replace with填<a href="https://www.php.cn/link/b05edd78c294dcf6d960190bf5bde635"></a>
顺序不能反——先加开头再加结尾,否则第二轮会把刚加的 也当普通文本一起包进去。如果 href 值要随行变化(比如每行一个 URL),就得用正则捕获组,例如:Find what 填 ^(.+)$,Replace with 填 <a href="https://www.php.cn/link/b4cbf7ebbfe7633a1537cfa054833703"></a>,前提是每行原本就是纯 URL。
加完标签后渲染异常?检查换行和空白符
<pre class="brush:php;toolbar:false;"></code>、<code><textarea></code>、<code><script></code> 这类标签对换行和首尾空白极其敏感。用正则加完标签后,如果发现页面显示多出空行或内容错位,大概率是「行尾标签紧贴文字」还是「中间多了换行」的问题。</p>
<p>快速清理方法:</p>
<ul>
<li>选中刚加的标签区域,按 <code>Ctrl+Shift+P</code> → 输入 <code>Indentation: Reindent Lines</code> 回车,自动对齐缩进</li>
<li>手动删掉标签前后多余的空格或换行:把光标停在标签左侧,按 <code>Delete</code>;停在右侧,按 <code>Backspace</code></li>
<li>特别注意 <code><pre class='brush:php;toolbar:false;'>https://www.php.cn/link/263b1243ca2dbeb358777ceabc4a2e4c</pre> 这种嵌套结构——<code> 标签内部不允许有首尾空白,否则高亮失效
正则加得快,但最后那几下删空格、调缩进的动作,往往才是决定是否能直接上线的关键。


















