VSCode中markdownlint不生效,需确认安装DavidAnson.vscode-markdownlint插件、配置文件置于工作区根目录且为合法JSON、启用"markdownlint.autoFixOnSave":true并禁用Prettier冲突。

VSCode 里装了 markdownlint 却没反应?不是插件坏了,而是它默认不修、不标红、不提示——得手动开关键开关,且容易被其他插件(比如 Prettier)静默覆盖。
怎么确认装的是真·Markdown Lint 插件
VSCode 扩展市场搜 “markdownlint”,结果里名字相似的很多:markdownlint-cli2、markdownlint-command、markdownlint-server 都只是命令行封装或后台服务,**不提供编辑器内实时波浪线和悬停提示**。
真正起作用的只有:DavidAnson.vscode-markdownlint(发布者是 David Anson,ID 完全匹配)。其他一概卸载,否则会干扰规则加载或语言模式识别。
- 打开 Extensions 面板(
Ctrl+Shift+X),搜markdownlint,只留一个 ID 是DavidAnson.vscode-markdownlint的 - 重启 VSCode,打开任意
.md文件,输入## 标题(末尾多一个空格),看是否立刻标黄提示MD024或MD009 - 右下角状态栏点一下语言模式,确认是
markdown,不是plaintext或markdown (plain)
为什么改了 .markdownlint.json 还不生效
vscode-markdownlint 只读你用 File > Open Folder 打开的那个文件夹根目录下的 .markdownlint.json(或 .markdownlint.yaml),**不会向上递归找父目录,也不会读用户 settings.json 里的 markdownlint.config 字段**。
常见失效原因:
-
.markdownlint.json放在子目录(如docs/.markdownlint.json),但工作区根是项目顶层,插件根本看不到 - JSON 写错:用了单引号、末尾多逗号、加了
// 注释(JSON 不支持注释) - 规则 ID 大小写写错,比如
"md013": false→ 实际必须是"MD013": false - 配置里写了不可修复规则(如
MD007、MD029),却误以为能自动修
怎么让保存时自动修复可修项
默认状态下,vscode-markdownlint **只报错、不修复**。要让它动手,得同时满足三个条件:
- 在
settings.json中启用:"markdownlint.autoFixOnSave": true - 确保
"editor.formatOnSave": true(否则 save 触发不了修复流程) - 禁用 Prettier 的自动格式化冲突:
"[markdown]": { "editor.formatOnSave": false },或改用editor.codeActionsOnSave精确控制
更稳妥的写法(推荐):
{
"markdownlint.autoFixOnSave": true,
"editor.codeActionsOnSave": {
"source.fixAll.markdownlint": true
},
"[markdown]": {
"editor.formatOnSave": false
}
}这样修复走 code action 流程,不跟 Prettier 的 format 流程打架。验证方式:保存后看波浪线是否消失,而不是内容反复“跳动”。
哪些规则能修、哪些不能修,怎么看
不是所有规则都支持自动修复。markdownlint 官方文档中每条规则页会标注 fixable: true 或 fixable: false。例如:
-
MD004(无序列表符号统一)→ 可修 -
MD013(行长度)→ 默认不可修(除非你用 CLI +--fix,VSCode 插件不支持) -
MD026(标题末尾标点)→ 可修 - 自定义正则规则(
MD999类)→ 一律不可修,仅提示
临时禁用某条规则最灵活的方式不是改配置,而是在文件顶部加注释:<!-- markdownlint-disable MD013 -->。注意:HTML 注释语法必须完整,且需独占一行。
真正麻烦的从来不是配不配得上,而是多个插件对同一文件反复操作——Prettier 加空格、markdownlint 删空格、再保存又加回来。这种循环,只靠开开关关解决不了,得明确谁负责 format、谁负责 fix、谁彻底让路。


















