要给 Markdown 或 JSON 单独开自动换行,需配置 language-specific 设置:按 Ctrl+Shift+P 输入“Configure Language Specific Settings”,选择对应语言(如 json 或 markdown),在 settings.json 中添加 ["json"]: { "editor.wordWrap": "on" } 等块;注意 language ID 非扩展名、大小写敏感、无需引号包裹,且该设置优先级高于用户级配置。

怎么给 Markdown 或 JSON 单独开自动换行?
全局设 editor.wordWrap 为 on 后,JS/TS 文件可能因缩进链式调用反而更难读——这时候就得按语言单独配。VSCode 的语言特定设置优先级高于用户级设置,所以哪怕你全局开了,.json 文件仍可能不换行,除非显式声明。
操作路径很直接:按 Ctrl + Shift + P(Mac 用 Cmd + Shift + P),输入 Preferences: Configure Language Specific Settings,回车后选 json 或 markdown。它会自动在 settings.json 里加一个带方括号的块:
["json"]: {
"editor.wordWrap": "on"
}
-
["json"]对应右下角状态栏显示的 language ID,不是文件扩展名(比如.log文件若被识别为plaintext,就得配["plaintext"]) - 不要写成
"[json]"—— 多了一对引号就失效 - 配完不用重启,新开一个
.json文件立刻生效;已打开的文件可能需要手动按一次Alt + Z刷新渲染
为什么改了语言设置还是不换行?常见覆盖链
VSCode 的配置生效顺序是:工作区设置 > 语言特定设置 > 用户设置 > 默认值。最容易踩的坑是:你刚在用户级 settings.json 里写了 "editor.wordWrap": "on",又在项目根目录的 .vscode/settings.json 里写了 "editor.wordWrap": "off" —— 后者会直接压掉前者,连语言块都救不了。
- 检查右下角语言标识(如
JSON),点击它 →Configure 'JSON' language based settings,确认里面没出现"editor.wordWrap": "off" - 某些插件(比如 Prettier、EditorConfig)会在启动时重写
wordWrap,临时禁用插件可验证是否是它们干扰 - 如果语言 ID 不确定,打开对应文件后运行
Developer: Inspect Editor Tokens and Scopes,看第一行显示的languageId
如何让长 URL 或 base64 在 Markdown 里不被硬切?
editor.wordWrap 设为 on 是按单词边界折行(空格、斜杠、连字符处),但 Markdown 里的超长链接或 base64 字符串往往没空格,就会溢出;换成 bounded 虽能强制截断,却把哈希值从中间劈开,阅读困难。
- 目前 VSCode 没提供“只在空格处折、否则宁可溢出”的开关
- 折中方案:对
["markdown"]配"editor.wordWrap": "on"+"editor.wrappingIndent": "indent",至少保证第二行缩进对齐,视觉上不割裂 - 真正想防溢出,得靠预处理——比如用 Prettier 的
proseWrap或自定义脚本在保存时插入软换行符(\u200B),但这是编辑器外的事了
language-specific 设置能和 wordWrapColumn 混用吗?
可以,而且常用。比如团队要求 Markdown 文档单行不超过 80 字符,但又不想在宽屏上浪费空间,就组合使用:
["markdown"]: {
"editor.wordWrap": "bounded",
"editor.wordWrapColumn": 80
}
-
bounded模式下,换行点取“编辑器视口宽度”和wordWrapColumn的较小值,大屏时按 80 列,小屏时按窗口宽度,比较灵活 - 注意:
wordWrapColumn单独设无效,必须搭配wordWrap为wordWrapColumn或bounded - 这个列数只影响显示,Git diff 和复制粘贴仍看到原始单行——别指望靠它生成符合规范的提交内容
最麻烦的永远不是怎么配,而是配完发现某类文件不生效——这时先盯住右下角语言 ID,再一层层查覆盖源,比反复试参数快得多。


















