真正稳定可用的是 markdowntoc(作者 jonschlinkert),名字必须完全匹配、大小写敏感且无空格;安装前需确认 package control 正常,安装后必须重启 sublime text;文件须保存为 .md/.markdown 后缀并设置语法为 markdown gfm,光标需置于可操作位置且文档含至少一个合法标题;需配置 slugify 为 true 并设 mode 为 github 才能生成兼容 github 的中文链接 id;更新目录需手动触发且仅响应保存动作,光标须位于目录块内。

装错插件名就根本不会生效
搜“toc”或“markdown toc”装一堆名字相近的插件,比如 MarkdownToc、AutoTOC、TOC,结果按快捷键没反应——这些都不是你要的。真正稳定可用的是 MarkdownTOC(作者 jonschlinkert),名字必须完全匹配,大小写和 TOC 之间无空格。
- 安装前先确认 Package Control 已就位:按
Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(macOS),输入Package Control: Install Package能正常调出列表才算成功 - 输入
MarkdownTOC后回车安装,别点错成Markdown TOC(带空格)或markdown-toc(小写连字符) - 安装完必须重启 Sublime Text,否则命令面板里搜不到
MarkdownTOC: Insert/Update
光标位置 + 文件类型决定能否生成目录
即使插件装对了,也常出现“点了命令却啥都没插入”,问题基本出在两个地方:光标不在可操作位置,或者 Sublime 没把当前文件当 Markdown 处理。
- 确保文件已保存为
.md或.markdown后缀;未保存的临时文件不识别语法 - 右下角状态栏必须显示
Markdown或Markdown GFM,不是Plain Text——点状态栏文字手动选一次,或通过View → Set Syntax → Markdown GFM - 光标得放在想插入目录的位置,比如文档最开头,或
# 概述下一行;放在代码块里、引用块里、缩进段落里都会失败 - 文档里至少要有 1 个以
#开头的标题行,且前面不能有空格、制表符或其他字符
中文标题链接点不开?关键在 slugify 配置
生成的目录里链接是 [简介](#%E7%AE%80%E4%BB%8B) 这种 URI 编码格式,但 GitHub、GitLab、Obsidian 等渲染器默认认的是 jian-jie 这类短横线 ID,不配 slugify 就等于白生成。
- 打开
Preferences → Package Settings → MarkdownTOC → Settings – User - 粘贴并修改以下最小必要配置:
{
"slugify": true,
"slugify_mode": "github",
"auto_reload": true,
"base_level": 2
}
-
"slugify": true才会把## 中文标题转成zhong-wen-biao-ti而非%E4%B8%AD%E6%96%87%E6%A0%87%E9%A2%98 -
"slugify_mode": "github"严格按 GitHub 规则:去标点、转小写、空格/中文/符号全换短横线 -
"auto_reload": true表示每次保存文件时自动更新目录(省事,但改完标题必须Ctrl+S) -
"base_level": 2让##当一级标题处理,避免生成空列表(默认从#开始,但多数文档不用一级标题)
更新目录不是自动的,但可以一键完成
很多人以为“自动更新”=改完标题就刷新,其实它只响应保存动作,且只更新已有目录区域,不会挪位置、不会重排结构。真要调整,还是得手动触发。
- 光标放在已有目录任意一行上,再执行
MarkdownTOC: Insert/Update,它会原地替换整块目录 - 如果删了几个标题又加了新标题,但目录没变——说明你没保存文件,或光标没落在目录块内
- 想清空重来?删掉整个目录块,把光标放回顶部,再执行一次插入命令
- 注意:
Tools → MarkdownTOC → Update TOC菜单项有时不可用,优先用命令面板调用,更可靠
最易被忽略的一点:插件不检查标题层级是否连续。比如跳着写 ## 一、#### 三,它照样生成,但渲染器可能无法正确锚点跳转——标题结构本身得合理,插件只负责“照抄”。











