最稳方式是手动逐段操作:光标置于段首字前,双击选中该字,按ctrl+shift+g输入span.first-char回车;若段落已含标签,可用正则(\s)替换为$1批量处理。

直接用 Wrap with Abbreviation(Emmet 功能)最稳,但必须分段选中——它不支持“自动按段落拆分”,也不能跨空行智能识别。想批量处理多段首字,得先手动或正则切出段落边界,再逐段操作。
怎么用 Emmet 给每段首字加 <span class="first-char"></span>
前提是当前文件语法为 HTML(右下角显示“HTML”,不是“Plain Text”),且已安装 Emmet 插件(Ctrl+Shift+P 输入 Wrap with Abbreviation 能搜到)。
- 把光标放在某一段文字开头(比如
<p>今天天气很好…</p>的今字前) - 双击选中该字(别拖选,避免误包空格或标点)
- 按
Ctrl+Shift+G(Win/Linux)或Cmd+Shift+G(macOS),输入span.first-char回车 - 结果变成:
<span class="first-char">今</span>天天气很好…
注意:Emmet 不会自动跳到下一段;每段都得重复这个动作。如果段落间用空行分隔,可先用正则 \n\n 替换为
统一结构,再批量选 <p></p> 后第一个中文/字母字符。
正则批量定位段首字,但有硬限制
Sublime 正则不支持“段落首字符”这种语义匹配,只能靠上下文锚定。常见做法是匹配“<p></p><div class="aritcle_card flexRow artxards">
<div class="artcardd flexRow">
<a class="aritcle_card_img" rel="nofollow" href="/xiazai/skill5493" title="html-to-pptx"><img
src="https://img.php.cn/upload/skill/000/000/081/179051045119472.jpg" alt="html-to-pptx" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a>
<div class="aritcle_card_info flexColumn">
<a rel="nofollow" href="/xiazai/skill5493" title="html-to-pptx" class="overflowclass">html-to-pptx</a>
<p class="overflowclass">将多页 HTML 演示文稿转换为美化的 PPTX 文件,便于分享和分发。</p>
</div>
<a rel="nofollow" href="/xiazai/skill5493" title="html-to-pptx" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span>
</a>
</div>
</div> 后紧跟的非空白字符”,但仅适用于已带 <p></p> 标签的 HTML。
- 打开替换面板(
Ctrl+H),勾选.*(正则模式) -
Find what填:<p>(\S)</p> -
Replace with填:<p><span class="first-char">$1</span></p>
问题:只改第一处匹配;要全部替换得点 All。而且它无法处理纯文本段落(没 <p></p>)、或首字是空格/换行后紧接标点的情况。若段落用 <div> 或无标签纯文本,就得先统一加容器,否则正则无从下手。
<h3>为什么不能用多光标直接套标签?</h3>
<p>多光标(<code>Ctrl+Shift+L)适合“每行开头加字符”,但段落 ≠ 行——一个段落可能占多行,而空行、缩进、列表项都会打乱光标位置。你选中 5 段文字,按 Ctrl+Shift+L 后得到的是 5 个光标,但它们全落在你鼠标拖选的起始列上,不是每段开头。
- 想靠列选择(Alt+鼠标拖)对齐首字?失败率极高:中文字符宽度不一、等宽字体未启用、缩进混用 Tab/空格都会导致错位
- 用
Ctrl+D逐个选首字?可行但慢,且无法保证“每段第一个非空字符”逻辑(比如段首是或<br>) - 插件如 Text Pastry 只能插固定文本或序号,不支持“提取并包裹首字符”这种动态操作
真正容易被忽略的是:所谓“段落”,在 Sublime 里没有原生定义。它要么是带标签的 HTML 元素,要么是你自己用空行/缩进约定的人为分隔——工具只认字符位置,不理解语义。










