vscode默认不折行,必须同时设置editor.wordwrap为"wordwrapcolumn"或"bounded"且配editor.wordwrapcolumn值(如120)才生效;单独设列数无效,语言级配置会覆盖全局,软折行仅影响显示不改源码。

VSCode 本身不修改源码,只做视觉换行;要按指定字符数(比如 120)折行显示,必须同时配 editor.wordWrap 和 editor.wordWrapColumn,缺一不可。
为什么设了 editor.wordWrapColumn 还不生效?
单独设置 editor.wordWrapColumn 数值(如 120)完全无效——VSCode 不会自动启用它。你必须显式指定换行模式为 wordWrapColumn 或 bounded:
-
editor.wordWrap设为"wordWrapColumn":严格按列数截断,不管窗口多宽都折在第 120 列 -
editor.wordWrap设为"bounded":取视口宽度和editor.wordWrapColumn的较小值,适合兼顾大屏与规范 -
editor.wordWrap设为"on"或"off":editor.wordWrapColumn完全被忽略
怎么在 settings.json 里正确配置?
推荐直接编辑用户级 settings.json(Ctrl + , → 右上角“打开设置(JSON)”),避免 GUI 设置被 language-specific 规则覆盖:
{
"editor.wordWrap": "bounded",
"editor.wordWrapColumn": 120,
"editor.wrappingIndent": "indent"
}
其中 editor.wrappingIndent: "indent" 很关键:它让换行后的续行保持缩进对齐,否则可能错位成“顶格换行”,尤其在 JSON 或链式调用里特别难读。
language-specific 配置会覆盖全局设置
如果你发现 Markdown 或 JSON 文件没按 120 列换行,大概率是语言专属设置在起作用。检查 settings.json 是否有类似这样的块:
"[markdown]": {
"editor.wordWrap": "on"
},
"[json]": {
"editor.wordWrap": "bounded",
"editor.wordWrapColumn": 80
}
这类配置优先级高于全局设置。要么删掉冲突项,要么把对应语言的 wordWrapColumn 也补上。
真正容易被忽略的是:换行只是显示层行为,Git diff、linter、格式化工具(如 Prettier)完全感知不到它——它们依然按物理行处理。所以别指望靠这个解决 line-length 警告,那得靠 prettier.printWidth 或 isort.line_length 等真实格式化规则。











