直接安装Markdown All in One插件后,按Ctrl+Shift+P(macOS为Cmd+Shift+P)输入“Create Table of Contents”执行,即可在光标处插入基于#至######标题生成的目录;需注意中文标题锚点可能不稳定,建议用英文命名,并手动检查链接是否匹配实际id。

VSCode里怎么让Markdown自动生成目录
直接装 Markdown All in One 插件就行,它不依赖其他扩展,开箱即用。装完后打开任意 .md 文件,按 Ctrl + Shift + P(macOS 是 Cmd + Shift + P),输入 Create Table of Contents 回车,就会在光标位置插入标准 TOC。
常见错误现象:生成的链接点不动、跳转失效——大概率是标题含中文或特殊符号,VSCode 默认把空格和标点转成短横线(如 # 第一章 → #第一章vscode-markdown目录功能概述),但有些插件版本对中文锚点处理不稳定。建议标题尽量用英文命名,或手动检查生成的链接是否匹配实际 id 属性(可右键标题 → “复制链接地址”对比)。
几个关键点:
- 目录只识别
#到######的 Markdown 标题,忽略 HTML<h1>等标签 - 默认不包含
h1(即顶级#)在 TOC 中,如需显示,得在插件设置里开启markdown.extension.toc.includeLevel并设为[1,2,3] - 保存文件后不会自动刷新目录,必须手动再执行一次
Create Table of Contents,除非你开了插件的autoUpdate选项(可能影响大文档性能)
多文件夹工作区里,每个子项目能独立配置插件吗
不能。VSCode 的插件启用状态是全局或工作区级的,不是按文件夹粒度控制的。你在 .code-workspace 里设的 "extensions": { "recommendations": [...] } 只是提示,不强制启用;真正起作用的是用户级或工作区级的 extensions.json 配置。
所以如果你在 backend 文件夹里用了 ESLint,frontend 用 Stylelint,它们会同时加载——但只要各自配置文件(.eslintrc.js、.stylelintrc)存在且路径正确,插件自己会按需生效。别指望靠“禁用某个文件夹的插件”来减少干扰。
容易踩的坑:
- 误以为在某个子文件夹的
.vscode/extensions.json里写"unwanted-extension-id": false就能关掉——VSCode 不认这个格式 - 装了冲突插件(比如两个 Markdown 预览器),导致预览异常,这时候得手动在命令面板里运行
Developer: Show Running Extensions查看实际加载状态 - 工作区里有多个同名配置文件(如都叫
tsconfig.json),TypeScript 插件可能优先读取第一个找到的,而不是当前打开文件所在文件夹的
为什么资源管理器里文件夹顺序总乱,怎么固定
VSCode 资源管理器本身不提供拖拽排序或多文件夹重排功能。所谓“顺序”,其实是按 .code-workspace 文件中 "folders" 数组的书写顺序来的。你改完 JSON 保存,再重新打开工作区,顺序就变了。
实操建议:
- 编辑
myproject.code-workspace,把最常用的那个文件夹放在"folders"数组第一个位置 - 别依赖 UI 拖拽——它只是视觉临时调整,不写入配置,重启后还原
- 如果某文件夹名带空格或特殊字符(比如
"Frontend (React)"),VSCode 有时解析出错,建议用下划线或短横线替代空格
注意:"name" 字段只影响左侧边栏显示名,不影响实际路径或加载逻辑;但如果你删掉 "name",VSCode 就直接显示文件夹原始名,可能更长、更难读。
插件扫描文件太慢,怎么限制只查特定目录
很多插件(比如 GitLens、TODO Highlight、Markdown Preview Enhanced)默认递归扫描整个工作区,遇到 node_modules 或大型构建产物目录就会卡顿。解决办法不是卸载插件,而是精准控制扫描范围。
通用做法是在工作区 settings.json 里加排除规则:
"files.exclude": {
"**/node_modules": true,
"**/dist": true,
"**/build": true
},
"search.exclude": {
"**/node_modules": true,
"**/coverage": true
}关键区别:
-
files.exclude影响资源管理器显示和部分插件的文件监听(比如 ESLint) -
search.exclude只影响全局搜索(Ctrl+Shift+F)和部分插件的文本扫描(比如 TODO 插件) - 某些插件(如
Markdown All in One)还有自己的配置项,例如markdown.extension.toc.files,可指定只对["README.md", "docs/*.md"]生效
别漏掉一点:VSCode 的文件监听上限默认是 5000 个文件,如果项目超大,还得调高 files.watcherExclude 并确认系统 inotify 限制没被突破(Linux 下 cat /proc/sys/fs/inotify/max_user_watches)。


















