VSCode自动换行仅视觉折行不修改文件内容;按Alt+Z/Option+Z可临时切换当前文件换行状态,右下角实时显示;全局生效需设"editor.wordWrap": "on",但language-specific设置可能覆盖,须单独检查JSON等语言配置。

VSCode 的自动换行(editor.wordWrap)天生就是为“不改变源码”设计的——它只改显示,不插换行符、不触碰文件内容,Git diff 和保存结果完全不变。开就完事,但得避开几个关键坑。
怎么立刻验证当前文件是否支持软换行
按 Alt + Z(Windows/Linux)或 Option + Z(macOS),右下角状态栏会立刻显示“换行”或“不换行”。如果没反应,说明:
• 光标不在编辑器主区域(比如卡在终端、搜索框或设置页)
• 当前文件语言启用了 language-specific 设置(如 JSON 默认关换行)
• 文件是只读视图(如 Git diff、Search Result 面板)
为什么全局设了 "editor.wordWrap": "on" 还不生效
language-specific 设置优先级高于用户级配置,尤其对 .json、.md、.log 等非代码文件,VSCode 常默认关掉换行。验证和修复步骤:
• 打开不换行的文件
• 点击右下角语言标识(如 “JSON”)
• 选 “Configure 'JSON' language based settings”
• 检查打开的 settings 片段里是否有 "editor.wordWrap": "off"
• 删掉这行,或显式改成 "editor.wordWrap": "on"
editor.wordWrap 四种取值的实际区别
别只记 on 和 off,不同模式影响阅读体验:
• "on":按编辑器当前宽度折行,最通用,适合日常开发
• "wordWrapColumn":必须配合 "editor.wordWrapColumn": 120,严格按列数截断,适合团队硬性规范
• "bounded":取视口宽度与 wordWrapColumn 的较小值,大屏不浪费,小屏不挤,但窗口缩放时折行点会跳变
• "off":不折行,靠水平滚动——不是 bug,是刻意保留整行结构(如调试日志对齐)
长无空格串(base64 / URL / minified JS)还是不折行?
VSCode 只在空格、斜杠、连字符等自然断点处软折行。on 和 wordWrapColumn 对 base64 这类超长无分隔符字符串无效。真正能强制截断的只有:
• "bounded" 模式(在视口边界硬切,但可能把变量名从中间劈开)
• 或手动用正则查找替换插入 \n(这会真实修改文件)
• 更靠谱的做法:用格式化工具(如 Prettier 的 printWidth)处理源码,而非依赖编辑器渲染
最容易被忽略的是 language-specific 设置覆盖行为——哪怕你把 settings.json 改得再干净,点开一个 JSON 文件,它仍可能按自己的规则拒绝换行。每次遇到“开了却不生效”,先点右下角语言标签,再检查它的专属配置。


















