VSCode注释不自动换行不是bug,而是默认排除在word wrap外;需同时设置"editor.wordWrap":"bounded"和"editor.wordWrapOverrideInComments":true才生效,且须确保语言模式正确识别comment.token。

注释不自动换行,不是 bug,是默认被排除在 word wrap 之外的——必须显式启用 editor.wordWrapOverrideInComments 才生效。
为什么开了 editor.wordWrap 注释还是不折行
VSCode 默认只对「普通文本行」做软换行,/* */ 和 // 注释内容被归类为独立 token(如 comment.block 或 comment.line),即使 editor.wordWrap 设为 "on",它们也不会参与折行逻辑。
- 现象:代码行正常折行,但同一行末尾的
// 这里写了一大段说明文字……仍横向溢出 - 验证方式:Ctrl+Shift+P → 输入
Developer: Inspect Editor Tokens and Scopes→ 光标停在注释上,看token type是否为comment.line或comment.block - 根本原因:VSCode 的 word wrap 是按“语法作用域”分层控制的,注释域默认不继承编辑器级换行策略
让注释参与换行的两个必要配置
仅设 editor.wordWrap 不够,必须同时启用覆盖开关并选对模式:
-
editor.wordWrap必须设为"on"或"bounded"("off"和"inherit"无效) -
editor.wordWrapOverrideInComments必须设为true(默认是false) - 推荐组合:
"editor.wordWrap": "bounded"+"editor.wordWrapOverrideInComments": true,兼顾单词不断开和注释适配 - 别用
"wordWrapColumn"模式配注释——它只按列数硬切,无视注释缩进和语义边界,容易把// TODO:拆成两行
注释换行后缩进错乱?不是 word wrap 的问题
换行后的第二行注释顶到行首、或缩进多出几个空格,和 editor.wordWrap 无关,而是格式化插件在“模拟回车”时插入了错误缩进。
- 典型诱因:
javascript.format.enable、python.formatting.provider等语言 formatter 在你敲Enter时重排注释行 - 临时解决:关掉实时格式化,改用
editor.formatOnSave: true - 对齐保障:确保
editor.comments.insertSpace为true(默认值),否则//TODO会紧贴无空格 - Vue / TS 的 JSDoc 特别注意:TSServer 可能覆盖换行效果,需在
settings.json中加"typescript.preferences.includePackageJsonAutoImports": "auto"并重启 TS 服务
不同文件类型下注释换行是否生效
不是所有带 // 或 /* */ 的文本都会被识别为注释——能否换行,取决于当前 language mode 提供的语法高亮定义。
- 生效:JavaScript、TypeScript、C/C++、Rust(标准注释 token 被正确标记为
comment.*) - 不生效:Python 的
"""docstring"""是string.quoted.docstring,不是 comment,editor.wordWrapOverrideInComments对它无效 - 半生效:Markdown 的
<!-- -->是 HTML 注释,但 VSCode 默认 language mode 为markdown,需手动在右下角语言标签点开 → “Configure 'markdown' language based settings” → 单独加"editor.wordWrap": "on"和"editor.wordWrapOverrideInComments": true - 检查方法:打开文件 → Ctrl+Shift+P →
Developer: Inspect Editor Tokens and Scopes→ 看 token type,不是comment.*就别指望它换行
最常被忽略的一点:language-specific 设置优先级高于全局设置。哪怕你在用户 settings.json 里写全了配置,只要某个文件的语言配置里有 "editor.wordWrap": "off",注释就坚决不换行——得去那个语言专属设置里删掉或覆盖它。


















