VSCode 默认不换行是设计而非 bug;需设 "editor.wordWrap": "on" 于用户 settings.json 中,避开 language-specific 覆盖,Alt+Z 失效常因焦点不在编辑器或语言设置冲突。

VSCode 默认不换行,不是 bug,是设计如此;要让它像记事本那样“所见即所得”地折行显示,关键不是开个开关,而是选对 editor.wordWrap 模式并避开语言专属设置的覆盖。
为什么按 Alt+Z 没反应?焦点和语言设置在捣鬼
快捷键 Alt + Z(Windows/Linux)或 Option + Z(macOS)只作用于当前获得焦点的编辑器主区域。常见失效原因:
- 光标在终端、搜索框、侧边栏或调试控制台里——这些区域不响应该快捷键
- 右下角语言标识(如
JSON、Markdown)被点击过,触发了 language-specific 设置,里面写了"editor.wordWrap": "off",它优先级高于全局设置 - 文件刚打开时渲染未完成,按一次没生效,再按一次试试
永久生效必须改用户级 settings.json,别信 auto 或 inherit
想所有文件一打开就自动换行,必须直接写入用户设置,而不是依赖工作区或语言块配置:
- 打开
settings.json(快捷键Ctrl + ,→ 右上角“Open Settings (JSON)”) - 添加这一行:
"editor.wordWrap": "on" - 删掉可能存在的
"editor.wordWrap": "auto"——它实际几乎不触发换行,等于关着 - 避免用
"editor.wordWrap": "inherit"——它会继承父级(比如插件或工作区)设置,行为不可控
wordWrapColumn 不是单独设数字,得配对模式才起效
如果团队规范要求“单行不超过 120 字符”,不能只写 "editor.wordWrapColumn": 120:
- 必须同时设
"editor.wordWrap": "wordWrapColumn",否则列数设置完全无效 -
"bounded"看似灵活,但窗口缩小时会突然切回软折行,阅读节奏被打断,不适合日常编码 - 折行点按字符数切,不识别中文词边界或 URL 连续性,长链接或变量名会被硬截断
换行只是视觉渲染,不影响任何真实行为
这个功能纯粹是编辑器层的显示开关,别指望它改变代码实质:
- Git diff、
eslint、prettier等工具看到的仍是原始单行,它们不感知换行渲染 - 复制粘贴时,换行符不会被带出——你复制的还是逻辑上的一整行
- Markdown 预览、终端输出、调试面板里的内容,不受
editor.wordWrap控制 - 极长行(比如 base64、日志 dump)开启后可能卡顿,此时可临时切到
"bounded"缓解压力
最容易被忽略的,是 language-specific 设置像影子一样覆盖全局配置——每次遇到某类文件不换行,第一反应不该是重装插件,而是点右下角语言标签,进去看有没有一行悄悄写着 "editor.wordWrap": "off"。


















