sublime text 中正确配置 rulers 标尺线需在 user 设置中添加 "rulers": [79](python 遵循 pep 8),仅作用于当前语法类型更稳妥;禁用 word_wrap,确保标尺与 linter/格式化工具协同校验真实行宽。

Sublime Text 没有真正“限制”单行代码长度的功能,它既不会截断输入,也不会自动换行;所谓“限制”,实际只有两种互不兼容的机制:一种是 rulers(纯视觉参考线),另一种是 word_wrap + wrap_width(仅改变显示,不改内容)。选错机制,配置就白调。
怎么正确配置 rulers 显示标尺线?
rulers 是 Sublime 原生支持的垂直参考线,只画线、不干预代码,适合配合 linter 或格式化工具使用。关键在于写对位置和格式:
- 打开 Preferences → Settings,只改右侧「User」面板(不是左侧 Default)
- 在 JSON 对象顶层添加:
"rulers": [79](Python 推荐用 79,不是 80) - 多个值如
[79, 120]会同时显示两条线,适合混合规范场景 - 必须是数字数组:
[79]有效,"79"或79都无效 - 保存即生效,无需重启;若不显示,先看控制台(
Ctrl+`)是否有Invalid settings in …报错
为什么 Python 要设 [79] 而不是 [80]?
PEP 8 明确要求“行宽不超过 79 字符”,因为部分终端、diff 工具会在行首/行尾额外占 1 列。rulers 从第 1 列开始计数,[79] 才是对齐第 79 个字符位置的严格实现。设 [80] 表面整齐,实际已超规 1 字符。
更稳妥的做法是走语法专属设置:
- 右下角状态栏切换到 Python 文件
- Preferences → Settings – More → Syntax Specific – User
- 填入:
{"rulers": [79]} - 这样不会影响 Markdown、JSON 等其他文件类型
rulers 和 word_wrap 别混着用
开启 word_wrap(软换行)会让编辑器按窗口宽度或 wrap_width 自动折行,这会严重干扰你判断真实行宽——眼睛看到的是“折了”,但 black 或 flake8 仍按单行算长度。
- 确保
"word_wrap": "auto"(默认值,等效于关闭软折) - 绝对不要同时设
"wrap_width": 80,否则标尺线和软折位置可能错位,反而误导 - 真正要截断长行,靠
black、prettier或插件(如 Wrap Plus),不是靠rulers
标尺线不显示?先查这三处
90% 的失效不是配置错,而是被覆盖或隐藏:
- 确认改的是
Preferences.sublime-settings(User),不是 Default,也不是某个语法专属设置 - 某些主题(如 ayu、Material Theme)把标尺线颜色设成透明或与背景同色,临时换回
Adaptive.sublime-theme快速验证 - 当前字体不是等宽字体——
rulers按字符列数计算,非等宽字体(如 Helvetica)会导致位置严重偏移;运行sublime.active_window().active_view().settings().get('font_face')查看当前字体
制表符(\t)默认展开为 4 列,但 rulers 不识别其逻辑宽度;启用 "translate_tabs_to_spaces": true 后对齐更稳定。真正起作用的,从来不是那条线本身,而是你是否把它和 flake8 的 E501 报错、或 black 的自动重排联动起来。











