Sublime Text 不支持 Markdown 自动编号,因编辑器引擎不跟踪数字语义,渲染器只解析不修改源码;可行替代是正则清空后用 InsertNums 插件递增生成编号;推荐统一用 1. 开头并依赖渲染器自动处理。

Sublime Text 本身不支持 Markdown 自动编号(如 1. 后自动续为 2.、3.),也没有内置的列表递增逻辑。所谓“自动编号”必须靠外部机制触发,不是开个设置就能生效的功能。
为什么 Markdown 列表在 Sublime 里不会自动续号
Markdown 渲染器(包括预览插件)只解析语法,不修改源码;Sublime 的编辑器引擎也不跟踪数字序列语义。输入 1. item 回车后,它不会自动生成 2. —— 这和 VS Code 或 Typora 的智能续号行为有本质区别。
常见误解是以为启用 auto_indent 或装了 Emmet 就能解决,但 Emmet 对 Markdown 列表缩写(如 ol>li*3)仅在 HTML 模式下有效,且生成的是静态编号,不随后续增删动态更新。
- MarkdownEditing 等主流语法包未实现行间编号状态维护
- Sublime 的
incremental_find或swap_line_down类命令不感知数字语义 - 即使用正则替换批量改编号,也属于手动干预,非“自动”
可行的替代方案:用正则 + 命令快速重编号
真正能落地的“自动编号”,是通过正则查找 + 替换 + 手动触发完成的。适用于写长文时临时整理有序列表。
使用 SQLite FTS5 对结构化 Markdown 文档库进行全文搜索,适用于需要快速、高效搜索大量 Markdown 文章的场景。
操作步骤:
- 选中要重编号的列表段落(比如从
1.到5.的所有行) - 按
Ctrl+H(Win/Linux)或Cmd+H(Mac)打开替换面板 - 勾选
Regular Expression(Alt+R) - 查找框填:
^\d+\.\s(匹配行首数字+点+空格) - 替换框留空,先点击
Replace All清掉旧编号 - 再按
Ctrl+Shift+L(Win/Linux)或Cmd+Shift+L(Mac)为每行加光标 - 输入
1.,然后按Ctrl+Shift+P→ 输入Insert Num→ 选择Insert Numbers(需安装插件InsertNums)
若未装 InsertNums,可临时用 Package Control 安装:命令面板输入 Package Control: Install Package → 搜 InsertNums → 回车。它支持从指定起始值、步长递增,比手敲可靠得多。
避免依赖自动编号的更稳做法
长文写作中,硬靠自动编号反而容易翻车——删中间一项就得全重排,协作时还可能因格式差异导致渲染错乱。更推荐的实践是:
- 一律用
1.开头(Markdown 规范允许所有行都写1.,渲染器会自动转为连续序号) - 需要视觉对齐时,用空格或 Tab 手动补位,不依赖数字值
- 配合
MarkdownPreview插件实时预览,确认渲染结果而非源码编号 - 导出前用
Prettier或markdownlint统一格式,它们不碰编号逻辑,只校验结构
真正麻烦的不是编号本身,而是把“编号是否连续”当成正确性指标。Markdown 的语义在于列表结构,不在数字字面值。一旦意识到这点,就不用在 Sublime 里找不存在的“自动编号开关”了。

















