Markdown All in One 是 VSCode 生成 Markdown 目录的首选插件,因其默认适配最新版 VSCode、自动 URL 编码中文锚点、支持 toc.levels 和 toc.include 精确配置,并能自动替换已有 TOC 区域。

VSCode 本身不生成 Markdown 目录,必须靠插件或配置驱动——Markdown All in One 是目前最稳定、开箱即用的选择,其他插件要么功能残缺,要么维护停滞。
为什么 Markdown All in One 是首选
它不是“能用”,而是“默认就对”。其他插件常卡在中文锚点失效、保存时不更新、跳转链接错位等问题上;而 Markdown All in One 在 2026 年最新版中已默认适配 VSCode 1.118 的大纲事件总线,能响应标题增删、重命名、层级调整等全部变更。
- 生成的锚点自动做 URL 编码(如
#中文标题→#%E4%B8%AD%E6%96%87%E6%A0%87%E9%A2%98),预览和导出都可靠 - 支持
toc.levels配置,比如设为3就只收录#到###,避免四级标题污染导航 - 不用手动删旧目录再重生成——执行一次
Markdown: Create Table of Contents命令,它会自动定位并替换已有 TOC 区域
toc.levels 和 toc.include 怎么配才不乱
这两个配置项直接决定目录“收哪些、收几层”,配错会导致标题漏掉或嵌套错位。它们在 settings.json 里生效,不是插件 UI 里点点就行。
-
"markdown.extension.toc.levels": "2-4":表示只取二级到四级标题(##~####),注意是字符串格式,不是数字数组 -
"markdown.extension.toc.include": ["^# ", "^## ", "^### "]:正则匹配开头,可精确控制哪些标题被纳入(比如排除带图标前缀的? # 注意事项) - 别写
"toc.levels": 3这种数字——插件会静默忽略,必须是字符串"3"或范围"1-3"
中文标题跳转失败?先检查这三处
不是插件坏了,大概率是环境链路断在某个环节。跳转依赖三段式解析:标题文本 → 锚点 ID → 浏览器/预览器识别。任一环出问题都会“点不动”。
- VSCode 内置预览(
Ctrl+Shift+V)不支持部分中文锚点,换用Markdown Preview Enhanced插件预览更稳 - 标题行末尾有空格或不可见字符(如零宽空格
\u200B),会导致生成的锚点和实际 ID 不一致 - 文档用了
---分隔的 YAML front matter,且里面含title:字段——某些旧版插件会误把 front matter 当标题扫描,删掉或加注释<!-- title: xxx -->即可
别依赖“自动更新”,手动触发才是真可靠
插件虽支持“保存时更新目录”,但实际中常因文件编码、大文档延迟、Git 暂存区冲突等原因失效。真正可控的方式,是绑定快捷键或命令面板快速重刷。
- 推荐把
Markdown: Create Table of Contents绑定到Ctrl+Alt+T(避免和系统快捷键冲突) - 光标必须放在文档内、且不能在代码块或引用块中——否则命令会静默退出,不报错也不生成
- 如果目录区域被手动改过(比如删了某一行),再次运行命令不会“智能补全”,而是整块替换,所以别在 TOC 里手写备注
最易被忽略的是:目录生成后,VSCode 侧边栏的“大纲”视图(Outline)是否同步更新。它和插件生成的 TOC 是两套机制——大纲靠语言服务器解析,TOC 靠文本扫描。两者不一致,说明你的标题语法可能不规范(比如 ##标题 缺少空格),得先修语法,再谈自动化。


















