ctrl+shift+o是打开vscode大纲视图的最快路径,它即时提取markdown标题(#至######)生成层级结构,需确保语言模式为markdown、标题语法规范(顶格、#后单空格)、设置explorer.experimental.showoutline为true且outline.automaticcollapse为false。

Ctrl+Shift+O 打开大纲视图是最快路径
VSCode 内置的大纲(Outline)视图不依赖插件,直接按 Ctrl+Shift+O(Windows/Linux)或 Cmd+Shift+O(macOS)就能唤出。它不是“生成”而是“即时提取”——只要当前文件语言模式为 markdown,且标题语法正确(# 至 ######),大纲立刻显示层级结构。
常见错误现象:按下快捷键后空白或只显示“Loading…”。此时要确认三件事:
- 右下角状态栏语言模式是否为
Markdown(不是Plain Text或GitHub Markdown) -
explorer.experimental.showOutline是否设为true(新版设置中叫 “Explorer > Show Outline”) -
outline.automaticCollapse是否为false,否则大纲会自动折叠成单行
中文标题在大纲里显示正常,但点击跳转失效?
这不是大纲的问题,而是锚点链接格式不匹配。VSCode 内置预览把中文标题转成 URL 编码(如 #%E4%B8%AD%E6%96%87%E6%A0%87%E9%A2%98),而某些插件生成的目录用的是原始文本(#中文标题)。两者不一致,点击就跳不动。
解决方法只有一条:统一用 VSCode 的锚点规则。装了 Markdown All in One 后,在设置里搜 markdown.extension.toc.slugifyMode,把它从默认的 github 改成 vscode。改完必须手动删掉旧目录、重新执行 Markdown: Create Table of Contents,否则旧链接不会更新。
为什么有些标题没出现在大纲里?
大纲只显示语义清晰、被语言服务器识别为“标题”的行。以下情况会被忽略:
- 以空格或制表符开头的
# 标题(缩进导致解析失败) -
#和文字之间多于一个空格(如# 标题) - 用了 Setext 风格标题(即用
=或-下划线方式),VSCode 默认不支持 - 标题行末尾带多余字符,比如
# 标题 <!-- 注释 -->
最稳妥写法是:# 标题(井号后一个空格,无其他干扰字符),且整行不能混入 HTML 标签或注释。
大纲视图和文档内 TOC 是两回事,别混用
侧边栏的 Outline 是导航面板,实时响应编辑,不修改文档内容;而插件生成的 TOC(如 Markdown: Create Table of Contents)是插入到文件里的 Markdown 列表,用于导出或分享。
两者独立运作:
- 关掉大纲视图不影响文档内 TOC 渲染
- 删掉文档里的 TOC,侧边栏大纲照常工作
- 大纲能跳转到所有标题,包括未被 TOC 插件收录的
######级别标题
真正容易被忽略的是:大纲依赖语言服务器加载。如果打开 .md 文件后大纲一直为空,按 Ctrl+Shift+P 输入 Developer: Toggle Developer Tools,看 Console 是否报 Failed to resolve outline provider for 'markdown'——这说明内置 Markdown 扩展没启动,重启 VSCode 或重装一次内置扩展最有效。











