装了插件但命令不出现?大概率是文件没被识别为Markdown,或者插件没激活。中文锚点乱码?那是VSCode预览和GitHub的规则差异。updateOnSa ve只更新已有目录块,不是自动生成。默认只到H3,想显示更多得手动配levels。

安装 Markdown All in One 插件后,Markdown: Create Table of Contents 命令不出现?
其实原因很简单,要么是插件没激活,要么是文件没被当成Markdown来对待。VSCode的机制是这样的:只有当你打开一个.md文件,并且右下角状态栏显示“Markdown”,它才会把插件的命令加载出来。
- 手动切换语言模式:按
Ctrl+K M,输入markdown并回车,立刻生效。 - 检查插件是否启用:打开扩展面板(
Ctrl+Shift+X),搜索Markdown All in One,确认右侧开关是开启状态。 - 重启VSCode后再试——插件有时需要重载语言服务才能注册全部命令,重启一下最省心。
生成的目录链接点不跳转,或中文标题锚点乱码?
这个问题很常见,根本原因是VSCode的预览和GitHub对中文锚点的处理方式不一样。VSCode内置预览(Ctrl+Shift+V)会把中文标题转成百分号编码,比如# 项目配置说明变成#%E9%A1%B9%E7%9B%AE%E9%85%8D%E7%BD%AE%E8%AF%B4%E6%98%8E,但点击时可能解析失败,导致跳转不了。
- 先确认
markdown.preview.toc设置已启用——在设置里搜一下,勾上就行。 - 别指望预览窗口的跳转准不准,改用VSCode侧边栏的「大纲」面板(Outline)更靠谱,它直接解析语法树,跳转100%准确。
- 如果要在GitHub上正常显示,标题里别用emoji、全角标点、空格,推荐用短横线分隔词,比如
## api-响应格式。
updateOnSa ve 设为 true 后目录还是不自动更新?
这个配置项只对“已经存在的目录块”有效,它不会自动帮你生成一个新目录。它的工作机制是:保存文件时,插件会去查找文档中由它之前生成的那个目录(也就是以- [开头的列表),然后刷新里面的链接和层级,而不是重新插入一个新目录。
- 第一次必须手动运行
Markdown: Create Table of Contents命令,生成初始目录。 - 之后你增删改标题,只要不删掉整个目录块,保存时就会自动更新。
- 如果之前删过目录想恢复自动更新,得重新执行命令生成——否则插件找不到可更新的目标。
- 配置项的正确路径是
settings.json里的"markdown.extension.toc.updateOnSa ve": true,注意前缀是markdown.extension,不是markdown.preview。
为什么多级标题(######)没出现在目录里?
这是默认设置,插件只包含H1到H3(也就是#到###)。更深的层级会被忽略,这不是bug,而是为了不让目录变得太冗长影响阅读体验。
- 如果想包含
####或#####,可以在settings.json里加上"markdown.extension.toc.levels": "1..6"。 - 这个值支持范围写法(比如
"2..4")或逗号分隔(比如"1,2,4")。 - 修改后不需要重启,但已有的目录需要重新生成或保存一次才能生效。
- 注意,GitHub的TOC渲染通常也只支持到H3,过度展开反而会降低跨平台兼容性。
目录能自动生成固然方便,但真正让人头疼的是怎么让它“一直准”。关键不在于怎么生成,而在于理解它什么时候不更新、为什么跳转不了、以及哪些改动会悄悄让目录失效。这些边界行为,比命令本身更值得琢磨。