VSCode 默认不自动换行是设计选择,需显式设置 editor.wordWrap;其生效受语言专属配置优先级影响,快捷键 Alt+Z 仅在编辑器主区域有效,且需配合 editor.wrappingIndent 保证缩进对齐。

VSCode 默认不自动换行,不是 bug,是明确的设计选择;editor.wordWrap 必须显式设置才生效,且极易被语言专属配置、插件或作用域覆盖。
按 Alt+Z / Option+Z 没反应?检查焦点和语言设置
快捷键只对当前**激活的编辑器主区域**有效。常见失效场景:
- 光标在终端、搜索框、侧边栏或调试控制台里——此时快捷键完全无响应
- 当前文件类型(如
.json、.md)启用了 language-specific 设置,例如右下角显示“JSON”,点击它后看到"editor.wordWrap": "off",该配置优先级高于全局设置 - 已打开的文件未刷新渲染:改完全局设置后,需手动按一次
Alt+Z才触发重绘
全局设了 "editor.wordWrap": "on" 还是不换行?优先查 language-specific 配置
VSCode 的设置优先级顺序是:language-specific > workspace > user。哪怕你在用户设置里写了 "editor.wordWrap": "on",只要打开的是 JSON 文件,它仍可能不换行——因为 VSCode 内置的 JSON 语言配置默认关掉了这个功能。
验证与修复步骤:
- 打开一个不换行的文件(比如
config.json) - 点击右下角语言标识(如 “JSON”)→ 选 “Configure 'JSON' language based settings”
- 检查打开的 settings.json 片段中是否有
"editor.wordWrap": "off" - 删掉这行,或显式改为
"editor.wordWrap": "on"
别依赖“右键 → 自动换行”,那只是会话级临时开关,关掉文件就失效。
editor.wordWrap 四个值的实际行为差异
选错值会导致“开了等于没开”或“换得莫名其妙”:
-
"off":默认值,强制水平滚动 -
"on":按视口宽度折行,窗口缩放时实时重排,适合日常写代码 -
"wordWrapColumn":严格按editor.wordWrapColumn(如120)字符数硬切,无视窗口大小;必须同时设置"editor.wordWrapColumn": 120才生效 -
"bounded":取视口宽度和editor.wordWrapColumn中较小值作为折行依据,但窗口缩小时行为突变,实际难预测,不推荐作为默认 -
"auto"和"inherit"不要选:"auto"几乎等同于"off";"inherit"易被插件或工作区覆盖,行为不可控
换行后缩进顶格、对齐错乱?加 "editor.wrappingIndent": "indent"
默认软折行会让第二行直接顶到行首,破坏嵌套结构的视觉连贯性(比如链式调用、缩进注释)。修复只需一行:
"editor.wrappingIndent": "indent"
它会让折行后的子行继承上一行的缩进层级。注意:
- 这个配置不影响真实内容,只改变显示对齐
- 如果仍不对齐,可能是字体问题(如某些等宽字体缺少软连字支持),换
Fira Code或JetBrains Mono通常能改善 -
editor.wordWrap是纯渲染层行为,不插入真实换行符,Git diff、保存、复制粘贴均不受影响
最容易被忽略的点:language-specific 设置不仅存在,而且默认就开着——尤其对 .json、.log、.md 这类非代码文件,它们往往自带 "editor.wordWrap": "off",不主动检查就会一直卡在“为什么设了还不换行”的循环里。


















