Sublime Text 不支持自动排版限宽,仅提供垂直标尺线(rulers)和软换行(word_wrap + wrap_width)两种视觉辅助;二者均不修改代码、不影响保存内容,且软换行需正确配置布尔值、语法专属设置及快捷键状态才生效。

Sublime Text 不能限制自动排版每行字符数——它根本没有“自动排版”功能,更不存在按字符数控制排版的行为。所谓“限制每行字符数”,实际只有两种互斥的视觉辅助:垂直标尺线(rulers)和软换行(word_wrap + wrap_width),二者都不修改代码、不触发格式化、也不影响保存内容。
为什么改了wrap_width却没看到排版效果?
因为word_wrap和wrap_width只控制显示折行,不是排版。常见失效原因包括:
-
word_wrap被设为字符串"true"或"auto",必须是布尔值true - 当前文件绑定了语法(如 Python),而该语法专属设置(
Python.sublime-settings)里写了"word_wrap": false,直接覆盖全局配置 - 你按过
Alt+Z(Windows/Linux)或Cmd+Option+Z(macOS),这个快捷键会强制关闭当前视图换行,优先级高于所有配置 -
wrap_width设为80时对中文、URL、变量名基本无效,因无空格分隔,Sublime 只能在空白或标点处折行
rulers怎么设才真正对齐 PEP 8 的 79 字符?
垂直标尺线是纯视觉提示,不干预编辑,但设错位置就失去意义:
- Python 项目必须用
[79],不是[80]——PEP 8 明确要求“不超过 79 字符”,因 diff 工具等会在行首/尾额外占 1 列 - 必须写成 JSON 数组:
"rulers": [79],写成"rulers": 79或"rulers": "79"会静默失效 - 推荐走语法专属设置:右下角切到 Python →
Preferences → Settings – Syntax Specific – User→ 填{"rulers": [79]},避免干扰 Markdown、JSON 等文件 - 若主题隐藏标尺线(比如设为透明色),可临时切回默认主题验证是否生效
想让长行被“切开”成多行?那得靠插件或手动命令
Sublime 不提供自动硬换行(即插入真实\n)。如果你需要把一行超长字符串或参数列表物理拆成多行:
- 手动触发:
Ctrl+Shift+P→ 输入wrap_lines→ 回车,它会在空格/逗号附近折行并插入\n(仅当前选中行或全文) - 装插件:
sublime_black(Python)、JsPrettier(JS/TS/JSON)等,它们调用外部格式化工具,支持line_length等参数,但需提前装好black或prettierCLI - 别指望
reindent:它只对齐缩进,不拆行、不重排结构、不识别语法边界
最易被忽略的一点:所有“限制”都只是视觉层行为,复制粘贴时折行完全消失,剪贴板里永远是原始单行文本。真要约束提交内容,得靠 pre-commit hook 或 CI 检查,而不是编辑器设置。


















