vscode中editor.wordwrap设为"on"才真正生效,因默认关闭换行是设计而非bug;它按视口宽度软折行,但会被language-specific设置(如json默认"off")覆盖;禁用"auto"和"inherit",配合"editor.wrappingindent": "indent"修复缩进错位,终端内无效。

editor.wordWrap 设成 "on" 才真生效
VSCode 默认关换行,不是 bug,是设计如此;只设 editor.wordWrap 为 "on",才能让所有文件(除被语言专属设置覆盖外)按视口宽度软折行。别选 "auto"——它在高 DPI 屏、远程开发里基本不触发;也别用 "inherit",容易被插件或工作区配置悄悄覆盖。
为什么 Alt+Z 快捷键有时没反应
常见失效场景有三个:
- 焦点不在编辑器主区域(比如光标停在终端、搜索框或侧边栏)
- 当前文件类型启用了 language-specific 设置(例如
.json文件默认是"off",哪怕全局开了"on"也无效) - 某些格式化扩展(如 Prettier)会动态重置该值,可临时禁用验证
快捷键本身是硬编码的:Alt + Z(Win/Linux)、Option + Z(macOS),只作用于当前标签页,关再开就恢复原状。
换行后缩进错位怎么办
默认软折行会让第二行顶到行首,破坏 if/for/函数体的视觉嵌套感。加这一行配置就能修复:
"editor.wrappingIndent": "indent"
它会让折行后的子行继承上一行的缩进层级。注意:这只是渲染层调整,不插入真实 \n,Git diff、复制粘贴、保存内容全都不受影响。
terminal 里的长文本根本没法靠 editor.wordWrap 解决
终端面板走的是独立渲染通道,editor.wordWrap 对它完全无效。你看到的超长单行(比如 base64、URL、commit message)横向溢出,是因为 shell 输出流没换行符,VSCode 终端目前不支持软换行(soft wrap)。
真正能起效的只有两种方式:
- 让程序自己输出
\n(如ls -la、cat file.log) - 用命令层处理:比如
cat huge.json | less -S、echo "x" | fold -w 100、PowerShell 的Out-String -Width 120
language-specific 设置的覆盖行为最容易被忽略——哪怕 settings.json 里写了 "on",点开一个 .json 文件,它照样可能不换行,得单独去那个语言的配置里确认。











