sublime text的自动换行是软换行,仅视觉折行不修改文本;wrap_width生效需word_wrap为true且无语法专属配置覆盖,设0按窗口自适应,设80则按列折行并支持缩进对齐,rulers可添加参考线。

Sublime Text 的自动换行宽度不是靠“设置一个值就自动对齐代码”实现的——它只做软换行(soft wrap),不改内容、不插换行符,wrap_width 控制的是视觉折行位置,且仅在 word_wrap 为 true 时生效。
为什么设了 wrap_width 却没反应?
最常见原因是:语法专属配置覆盖了全局设置。比如你改了 Preferences → Settings – User,但当前文件是 Python,而 Python.sublime-settings 里有 "word_wrap": false,那全局设置直接被无视。
- 先看右下角状态栏是否显示
Wrap: Off——点它能强制切换,这个开关优先级最高 - 打开目标文件(如
README.md),确认右下角显示的语法名(如Markdown) - 再执行
Preferences → Settings – Syntax Specific,编辑对应语法的.sublime-settings文件 - 确保里面只有
"word_wrap": true和"wrap_width": 80(或0),别写成"word_wrap": "true"或"wrap_width": "80"——字符串会被静默忽略
wrap_width 设成 0 还是 80?
这不是“对错”问题,而是用途差异:
-
"wrap_width": 0:按窗口宽度实时软换行,适合 Markdown、日志、纯文本阅读;缩放、分栏、多屏都适配 -
"wrap_width": 80:硬性参考第 80 列后最近空格/标点处折行,适合英文文档、邮件、注释排版;对中文、URL、下划线变量名基本无效 - 不设
wrap_width:Sublime 用内置默认(约 120),但行为不透明,建议显式指定 -
"wrap_width": -1或留空:无效,Sublime 不识别
怎么让第二行缩进对齐?
仅当 wrap_width 是正整数(如 80)时,indent_subsequent_lines 才起作用;设成 0 就不生效。
- 加这行:
"indent_subsequent_lines": true - 效果是:第二行及后续行视觉上缩进到第一行首个非空白字符位置
- 注意:这只是显示偏移,光标定位、复制粘贴、LSP 行号判断仍按原始单行计算
- JSON/YAML 等缩进敏感格式慎用,容易造成误读
要不要加 rulers 显示参考线?
要,尤其当你用了固定 wrap_width(比如 80)时。
- 在用户设置或语法专属设置里加:
"rulers": [80] - 编辑区会出现一条竖直参考线,帮你直观判断边界
- 它和
wrap_width是解耦的:可以只开 ruler 不开 word_wrap,也可以只开 word_wrap 不设 ruler - 多个值也支持,比如
"rulers": [80, 120]
真正容易被忽略的是:软换行不改变任何实际文本结构——你看到的“两行”,复制出来仍是单行;LSP、语法高亮、跳词(Ctrl+→)、Home/End 键行为,全都基于原始逻辑行。别指望它帮你重排代码或适配 PEP 8 自动断行。











