Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>Markdown Preview TOCNew to Visual Studio Code? Get it now.
Markdown Preview TOC

Markdown Preview TOC

RavenHogwarts

|
3 installs
| (0) | Free
在原生 Markdown 预览页面内注入左侧目录边栏,支持点击跳转与滚动高亮。
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Markdown Preview TOC

在 VSCode 原生 Markdown 预览页面内注入一个 左侧或右侧 TOC 边栏(GitBook / VuePress 风格):点击标题滚动到对应位置、滚动时高亮当前标题、支持折叠。

icon


✨ 功能

  • 预览内 TOC 边栏:固定在 Markdown 预览(Ctrl+Shift+V)左侧或右侧,与正文并排,不遮挡内容。
  • 点击跳转:点击 TOC 项,正文平滑滚动到对应标题。
  • 滚动高亮:滚动正文时,TOC 自动高亮当前可见标题(IntersectionObserver),高亮项超出 TOC 视区时自动跟随滚动。
  • 折叠 / 展开:点击头部折叠,折叠后浮出 ☰ 按钮一键展开。
  • 左右位置可配置:markdownToc.sidebarPosition(left / right)。
  • 层级缩进:按 h1–h6 层级自动缩进。
  • 主题适配:全部使用 VSCode 主题变量,明暗 / 高对比度主题下颜色正确。
  • 响应式:窄屏自动浮动抽屉化,不挤压正文。
  • 零侵入:不改你的 .md 源文件;TOC 完全在预览 DOM 内生成。

布局示意

左侧(默认)                      右侧(sidebarPosition:right)
┌──────────┬──────────────────┐   ┌──────────────────┬──────────┐
│ 目录  ▾  │ # 标题           │   │ # 标题           │ 目录  ▾  │
│ ├ 一     │ 正文段落……      │   │ 正文段落……      │ ├ 一     │
│ │ ├ 1.1  │                  │   │                  │ │ ├ 1.1  │
│ └ 二     │ ## 二            │   │ ## 二            │ └ 二     │
└──────────┴──────────────────┘   └──────────────────┴──────────┘

🚀 使用

安装

  • 方式一(推荐):在 VSCode 扩展面板搜索 Markdown Preview TOC 安装(已发布到 Marketplace)。
  • 方式二:从 GitHub Releases 下载 .vsix,执行 code --install-extension markdown-preview-toc-<版本>.vsix,或扩展面板 → ... → Install from VSIX...。

使用

  1. 打开任意 .md 文件,按 Ctrl+Shift+V(macOS:Cmd+Shift+V)打开预览。
  2. 预览左侧自动出现 TOC。

没看到 TOC?确认是「预览」而非源码编辑器;检查 markdownToc.enabled 是否为 true;文档需含标题。


⚙️ 配置

在 settings.json 中修改(改后预览自动刷新生效):

配置项 类型 默认 说明
markdownToc.enabled boolean true 是否在预览中显示 TOC 边栏
markdownToc.sidebarWidth number 260 边栏宽度(像素,180–480)
markdownToc.sidebarPosition "left" | "right" "left" 边栏位置
markdownToc.defaultCollapsed boolean false 打开预览时是否默认收起
markdownToc.minDepth number 2 最小层级(默认 2 隐藏 h1,1–6)
markdownToc.maxDepth number 6 最大层级(1–6)
markdownToc.highlightOnScroll boolean true 滚动时高亮对应标题
markdownToc.autoExpandDepth number 3 自动展开到第 N 层(0–6)

示例:

{
  "markdownToc.sidebarPosition": "right",
  "markdownToc.sidebarWidth": 300,
  "markdownToc.minDepth": 2
}

❓ FAQ

Q:TOC 会修改我的 markdown 文件吗? 不会。TOC 完全在预览 DOM 里生成,源文件零改动。

Q:点击后正文位置被遮挡? CSS 已设 scroll-margin-top。若仍有遮挡(如你自定义了固定头),可在 markdown.styles 加 h1,h2,h3,h4,h5,h6{scroll-margin-top:60px}。

Q:标题 id 与 GitHub 不一致? 原生预览用 githubSlugifier(移植自 github-slugger),与 GitHub 基本一致;CJK 标题直接保留字符。边缘差异可提 issue。

Q:与我的 markdown.styles 冲突? 优先级:内置样式 > 本插件 > 用户样式。本插件选择器用 #mdtoc- 前缀(高特异性),一般不冲突。

Q:远程开发能用吗? 能。extensionKind: ["ui","workspace"],优先本地运行。

Q:支持 vscode.dev 吗? 不保证,面向桌面版。

Q:大文档会卡吗? 不会。TOC 生成是 O(n) 扫描,IntersectionObserver 只观察标题,滚动时不重算。


📋 平台限制

  • 配置即时生效依赖刷新预览:配置在渲染期注入,改设置后由 onDidChangeConfiguration 自动触发 markdown.preview.refresh。
  • 外部命令难触达预览:本插件不提供外部命令,TOC 折叠用预览内的头部按钮。
  • 预览 DOM 结构非契约:本插件只依赖 h1–h6 + id(稳定),布局选择器带兜底。

详见 dev/260803/09-limitations-and-alternatives.md。


🔧 开发

pnpm install
pnpm run build          # 生成 dist/extension.js + media/toc.js
# 或 pnpm run watch

按 F5 启动扩展开发宿主,打开 sample/sample.md 预览验证。

调试预览脚本:Ctrl+Shift+P → Developer: Open Webview Developer Tools。

完整设计与实现文档见 dev/260803/。


📄 许可证

GPL-3.0-or-later

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft