vscode的vscode-markdownlint插件仅读取工作区根目录下的.markdownlint.json(或.yaml),不递归查找父目录;配置文件必须合法json、路径正确、名称严格为.markdownlint.json,且本地配置优先级高于settings.json中的markdownlint.config。

VSCode 的 vscode-markdownlint 插件只认项目根目录下的 .markdownlint.json(或 .markdownlint.yaml),其他位置的配置文件不会被加载,全局设置中的 markdownlint.config 也会被本地文件覆盖。
为什么改了 .markdownlint.json 还不生效?
最常见原因是配置文件没放对位置或内容非法:
- 必须放在你用
File > Open Folder打开的那个文件夹的**最顶层目录**,不是子目录,也不是用户家目录 - 文件名必须是
.markdownlint.json(注意开头的点),大小写敏感,markdownlint.json或markdownlint.config.json都无效 - JSON 内容不能含注释、末尾逗号、单引号;推荐用 VSCode 自带的 JSON 验证(保存时会报错)
- 如果同时存在
.markdownlint.json和settings.json里的markdownlint.config,前者优先级更高,后者会被忽略
default: true 是什么,能不能关掉某条规则?
"default": true 表示启用所有内置规则的默认行为,但你可以逐条覆盖。规则名区分大小写,MD013 有效,md013 会被忽略:
- 设为
false:完全禁用该规则,例如"MD024": false - 设为
true:启用默认参数 - 设为对象:自定义参数,例如
"MD003": { "style": "atx_closed" }强制标题用## 标题 ##形式 - 临时禁用某段:在 Markdown 文件里加 HTML 注释,如
<!-- markdownlint-disable MD013 -->
和 Prettier 冲突怎么办?
两者定位不同,但容易打架——esbenp.prettier-vscode 默认会重写列表缩进、空行、标题风格,可能覆盖 vscode-markdownlint 的提示:
- 检查是否装了
markdownlint-command或markdownlint-cli2类插件,它们不提供编辑器内实时校验,反而可能干扰 - 确保语言模式是
markdown(右下角状态栏显示),不是plaintext或md - 若想保留 Prettier 格式化 + markdownlint 检查,建议关闭 Prettier 对列表/标题的强制重写,例如在
prettier.config.js中加htmlWhitespaceSensitivity: 'ignore',并用.markdownlint.json明确约定风格
真正容易被忽略的是:插件只在你打开的是「文件夹」而非单个文件时才读取根目录配置;另外,规则参数值类型必须匹配文档要求——比如 MD007 的 indent 必须是数字,填字符串 "4" 就会静默失效。











