必须同时设置 editor.wordWrap 和 editor.wordWrapColumn 才生效;仅设 editor.wordWrapColumn 无效,因其仅在 editor.wordWrap 为 "wordWrapColumn" 或 "bounded" 时被读取。

必须同时设置 editor.wordWrap 和 editor.wordWrapColumn,缺一不可;只改列数不改模式,完全无效。
为什么设了 editor.wordWrapColumn 却不换行
VSCode 的软换行逻辑是“模式驱动”的:editor.wordWrapColumn 这个值只在 editor.wordWrap 为 "wordWrapColumn" 或 "bounded" 时才被读取。如果你只写了 "editor.wordWrapColumn": 120,但 editor.wordWrap 仍是默认的 "off" 或设成了 "on",那这个 120 就彻底被忽略。
-
"on":只看窗口宽度,无视wordWrapColumn -
"off":完全不换行,wordWrapColumn不起作用 -
"wordWrapColumn":严格按设定列数折行(哪怕窗口超宽) -
"bounded":取窗口宽度与wordWrapColumn中较小者
如何配置成“严格 120 列换行”
这是最常用于代码规范(如 ESLint 的 max-len、PEP 8 的 79 字符)的场景。目标是:无论编辑器多宽,只要一行视觉长度 ≥ 120 字符,就强制折到下一行。
- 打开
settings.json(Ctrl + , → 右上角齿轮 → “Open Settings (JSON)”) - 添加两行:
"editor.wordWrap": "wordWrapColumn", "editor.wordWrapColumn": 120
Alt + Z(Win/Linux)或 Option + Z(macOS)刷新渲染中文、emoji、全角字符会让折行位置偏移
VSCode 计算“第 120 列”时,用的是**渲染宽度**,不是字符数。这意味着:
- 一个中文字符 ≈ 2 个英文字符宽度,可能提前折行
- emoji 或全角符号同样占位更宽,实际折点可能在第 110–115 列左右
- 等宽字体(如 Fira Code、JetBrains Mono)下偏差较小;非等宽字体偏差更大
- 制表符
\t宽度取决于editor.tabSize,也会影响折行位置
别和格式化工具混淆:这不会插入真实换行符
这种换行只是编辑器渲染层的“软折行”,对文件内容零影响:
- Git diff、
git log -p、cat查看文件,仍显示为单行 - 复制粘贴文本时,换行符不会被带出(除非你手动回车)
- ESLint、Prettier、Black 等工具完全感知不到这个视觉折行——它们只检查源码里的真实换行
- 真要让长行被拆成多行并写入文件,必须用格式化器(如配
prettier.printWidth: 120)
最容易被忽略的一点:language-specific 设置(比如 "[json]": { "editor.wordWrap": "off" })会直接覆盖全局配置,检查右下角语言标签并点击配置,才能确认当前文件是否真的生效。


















