editor.wordWrap设为off时代码仍换行,是因为被语言专属配置、快捷键Alt+Z/Option+Z临时切换或插件覆盖;off模式本应强制横向滚动,绝不视觉折行。

editor.wordWrap 设为 off 时,为什么代码还是换行了?
这通常不是 off 生效了,而是你误触了快捷键或语言专属配置覆盖了它。VSCode 的 off 模式是真·禁用换行:长行一定横向滚动,绝不会视觉折行。如果看到换行,大概率是:
• 当前文件被识别成其他语言(比如 .log 文件被当成 plaintext,而该语言的 settings 中设了 "editor.wordWrap": "on")
• 你刚按过 Alt+Z(Windows/Linux)或 Option+Z(macOS),这是会话级临时开关,只对当前标签页有效
• 插件(如 Prettier、EditorConfig)在后台重写了 language-specific 配置,且未暴露在 UI 设置里
on 和 bounded 模式到底差在哪?别靠猜
on 是“按视口宽度折”,窗口拉宽,折行点就右移;拉窄,立刻重新排版——适合日常写代码、看 Markdown 或日志。bounded 看起来聪明,实则难控:它取 editor.wordWrapColumn 和当前视口宽度的较小值作为折行依据。但问题在于,这个“较小值”是动态计算的,一旦窗口宽度刚好跨过 wordWrapColumn,换行位置会跳变,第二行缩进也可能错位。更麻烦的是,bounded 对字体度量敏感,等宽/非等宽字体下表现不一致。
• 不要设 "editor.wordWrap": "bounded" 却漏配 "editor.wordWrapColumn",否则行为退化为 off
• bounded 在小屏设备上可能比 on 更卡顿,因为每次 resize 都要重算折行点
wordWrapColumn 模式必须配 editor.wordWrapColumn 才生效
wordWrapColumn 不是“开个开关就行”的模式——它是个依赖项。单独设 "editor.wordWrap": "wordWrapColumn",编辑器会直接忽略,退回 off 行为。
必须同时设置:
• "editor.wordWrap": "wordWrapColumn"
• "editor.wordWrapColumn": 120(数值按团队规范填,常见为 80、100、120)
注意:wordWrapColumn 计的是“可视字符数”,不是字节数。一个中文字符、emoji 或全角符号占 2 列,实际折行位置会比预期偏右。若需严格控制,建议搭配 "editor.wrappingIndent": "indent" 避免第二行顶格。
为什么开了 word wrap,base64 或超长 URL 还是一整行?
VSCode 默认只在空格、制表符、连字符、斜杠等“断词点”处折行。on 和 wordWrapColumn 都不会切开无空格字符串。这不是 bug,是设计——避免破坏原始数据结构。
解决办法有限:
• 改用 "editor.wordWrap": "bounded",它会在视口边界强制字符级截断(但会把哈希值从中间劈开)
• 手动在 base64 字符串里插入软换行(\u200b 零宽空格),但这属于 hack,不能自动化
• 接受现实:这类内容本就不该靠编辑器换行来读,应交由专用工具(如 base64 解码器、URL 解析器)处理


















