将 editor.wordWrap 设为 "wordWrapColumn",设置 editor.wordWrapColumn 为具体值(如 80),并设 editor.wordWrapBreakObtrusive 为 false,即可实现按单词边界换行而非强制拆分。

VSCode 自动换行默认会拆单词,怎么改?
VSCode 默认的 editor.wordWrap 设为 on 或 bounded 时,折行位置只看字符宽度,不管单词边界——所以常看到 transformation 被切成 transfor- 和 mation。这不是 bug,是设计如此;要真正“按词折行”,必须切换到语义化换行模式。
启用 wordWrap 的 wordWrapColumn 模式 + breakWords 关闭
关键不是单纯开/关换行,而是组合控制:先让换行点由列数决定(而非视口宽度),再禁止跨单词截断。VSCode 从 1.85 版本起支持更精细的 editor.wordWrap 配置:
-
editor.wordWrap设为wordWrapColumn(不是on) -
editor.wordWrapColumn设一个具体值,比如80(推荐设为和editor.rulers一致) -
editor.wordWrapBreakBeforeCharacters保持默认(含空格、标点等) -
editor.wordWrapBreakAfterCharacters保持默认 -
最关键一步:把
editor.wordWrapBreakObtrusive设为false(它控制是否允许在单词中间硬切,设 false 才真禁用)
实际效果:超过第 80 列的单词会整体移到下一行,而不是被截断。
为什么 editor.wordWrap: "on" 不行?
因为 "on" 是基于 viewport 宽度动态计算折行点,且内部逻辑强制开启 breakWords 行为,无法关闭。你拖动窗口大小,折行位置乱跳,还照样拆词。哪怕加了
editor.wordWrapBreakBeforeCharacters: " \t"`,也拦不住它在长单词里硬插换行符。</p><div class="aritcle_card flexRow">
<div class="artcardd flexRow">
<a class="aritcle_card_img" href="/xiazai/skill1675" title="VSCode"><img
src="https://img.php.cn/upload/skill/000/000/081/178842972858328.jpg" alt="VSCode" ></a>
<div class="aritcle_card_info flexColumn">
<a href="/xiazai/skill1675" title="VSCode">VSCode</a>
<p>避免常见的 VSCode 错误——设置冲突、调试器配置和扩展冲突。</p>
</div>
<a href="/xiazai/skill1675" title="VSCode" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a>
</div>
</div>
<p>常见误操作:</p>
<ul>
<li>只改 <code>wordWrap 为 on 或 off —— 无效
wordWrapColumn 但没改 wordWrap 模式 —— 不生效不同语言文件要注意的兼容性细节
某些语言扩展(比如 Python、Markdown)会覆盖编辑器级换行行为。例如:
- Markdown 预览模式下,
wordWrap设置完全不生效,那是浏览器渲染控制的 - Python 扩展有时会注入自己的
editor.wordWrap覆盖逻辑,建议检查设置搜索@ext:ms-python.python wordWrap - 终端内嵌的编辑器(如 GitHub Copilot Chat 的输入框)也不走这个配置
最稳的做法:在用户设置(settings.json)里写死,避免被扩展干扰:
{
"editor.wordWrap": "wordWrapColumn",
"editor.wordWrapColumn": 80,
"editor.wordWrapBreakObtrusive": false
}
换行这事看着小,但一旦涉及长路径、JSON key、URL 或日志行,拆词会导致肉眼定位困难。别信“差不多就行”,差那一个连字符,就多一次来回滚动。

















