在 VSCode 中处理长行代码时,有一个极为便捷的配置:只需将 editor.wordWrap 设为 "on",即可让代码根据当前窗口宽度自动进行软折行。无需手动指定列数,也不用重启编辑器,真正做到即调即用,大幅提升编码效率。
很多开发者会纠结选择 "on" 还是 "wordWrapColumn"。两者的核心区别在于:"on" 是纯响应式的——拉宽编辑器时,长行会自动舒展开;缩窄窗口时,它会立刻软折行。而 "wordWrapColumn" 则会严格按你设定的列数执行,比如设置为 120,即使窗口宽度扩展到 200 列,它仍然会在此处强行换行。对于写代码时频繁调整窗口大小的场景,显然 "on" 更加灵活适配。
还有一个容易被忽略的细节:"on" 模式只在空格、斜杠(/)、连字符(-)、点号(.)这类自然断点处折行,不会劈开变量名或 URL。对于中文、emoji、全角字符,它按渲染宽度计算而不是字符数,因此折行位置可能略偏右,但整体可读性仍有保障。另外,该设置不会被语言级配置默认覆盖——除非你在 [ja vascript] 这类代码块中显式写了 "editor.wordWrap": "off"。

配置方式:全局设置还是语言专属配置?
最省事的办法是直接修改全局 settings.json 文件:
{ "editor.wordWrap": "on"}
但如果只想对日志、Markdown 或 JSON 响应体启用自动换行,避免干扰 Python 或 JavaScript 的编码习惯,使用语言专属配置会更合理:
{ "[log]": { "editor.wordWrap": "on" }, "[markdown]": { "editor.wordWrap": "on" }, "[json]": { "editor.wordWrap": "on" }}
配置时需注意几点:语言标识符必须用方括号,比如 [log],不能写成 log 或 "log"。一旦某个语言块中设置了 "editor.wordWrap": "off",它会覆盖全局设置,需要手动删除才能恢复。另外,终端、调试控制台、大纲视图等区域不支持 wordWrap 特性,无需在此处调整。
"bounded" 模式适合什么场景?
如果你既要响应式折行,又担心窗口拉得太宽导致一行过长难以阅读——比如查看 SQL 语句或大段注释——那么 "bounded" 是个折中方案。它会取「窗口当前宽度」和「editor.wordWrapColumn 值」中的较小者作为折行依据。具体配置需要同时设置两个参数:
{ "editor.wordWrap": "bounded", "editor.wordWrapColumn": 120}
当窗口宽度小于 120 列时,按窗口宽度折行;大于 120 列时,则按 120 列硬卡——这比 "on" 模式更克制。但有一个缺点:"bounded" 在遇到没有空格的长串(比如 base64、哈希值、超长路径)时,会按字符级硬截断,可能把 sha256_abcdef1234567890 劈成两半,影响阅读体验。
真正容易被忽略的是:插件可能悄悄关掉这个设置。Prettier、EditorConfig 以及某些主题扩展会重置 editor.wordWrap 为 "off"。如果调完没有反应,建议先禁用插件进行排查,往往能快速定位问题根源。
