Sublime Text 无自动截断长行功能,仅支持两种机制:rulers(纯视觉标尺线,如Python项目推荐设为[79])和word_wrap+wrap_width(软换行,不改源码)。真正硬换行需依赖Black等格式化工具或手动操作。

Sublime Text 没有真正的“每行字符限制”功能
它既不会自动截断长行,也不会在保存时插入换行符。所谓“限制”,只有两种互不兼容的机制:一种是 rulers(垂直标尺线),纯视觉提示;另一种是 word_wrap + wrap_width(软换行),只改显示,不改源码。选错机制,配置就白调。
怎么加 79 或 80 列的垂直标尺线(rulers)
这是最常用、也最符合规范的做法,尤其适合 Python(PEP 8 要求 ≤79 字符)或团队统一代码宽度场景。
-
rulers必须写成 JSON 数组格式,例如:"rulers": [79]——79或"79"都无效 - 推荐 Python 项目用
[79],不是[80]:因为 PEP 8 明确以 79 为上限,终端和 diff 工具常额外占用首尾 1 列 - 想对某类文件单独生效?右下角状态栏切到 Python → Preferences → Settings – Syntax Specific – User → 填
{"rulers": [79]} - 标尺线不识别制表符
\t的真实宽度,建议同步开启"translate_tabs_to_spaces": true保证列数对齐稳定 - 如果标尺没出现,先看控制台(
Ctrl+`)是否有Invalid settings in …报错;再检查主题是否把标尺线设成透明色
怎么让长行“看起来”被折行(word_wrap + wrap_width)
这不是限制,而是软换行(soft wrap):源文件内容完全不变,只是显示时在空格或标点处视觉折行。适用于 Markdown、日志等非代码文件。
- 必须同时设置两个参数:
"word_wrap": true(注意是布尔值true,不是字符串"true"或"auto")和"wrap_width": 80 -
wrap_width设为0表示按窗口宽度折行;设为80表示“每行最多显示 80 字符” - 改完后已打开的文件不会实时刷新,需切换 Tab 或重新加载才能看到效果
- 中文文本因无空格分隔,
wrap_width几乎无效,建议设为0,靠拉宽窗口阅读 - 右下角状态栏显示
Wrap: Off?点它手动开启——这个操作会覆盖所有配置,导致你写的word_wrap设置失效
真正让长行被“切开”的唯一办法
Sublime Text 不提供后台监听式自动硬换行。要往源码里插入 \n,必须主动触发:
- 手动换行:光标停在合适位置,按
Enter - 用格式化插件:如
Black(Python)、Prettier(JS),它们会在保存时根据line_length或printWidth自动折行 - 配合 linter 使用:比如
Flake8报E501、ESLint报max-len,提醒你哪里超了,但不会自动修 - 别指望
rulers自己干活——它只是尺子,不是剪刀;标尺位置和软换行无关,长行被折成多行后,标尺仍钉在原始第 79 列
真正要 enforce 代码宽度,得靠外部工具链协同。标尺线只是最后那道肉眼校验线,不是起点也不是终点。


















