Sublime的rulers是纯视觉提示的垂直虚线,按逻辑列计算且不干预编辑行为;它不是自动换行、格式化、报错或保存相关的功能,也不受软换行影响,更无菜单开关。

Sublime 的 rulers 是什么,不是什么
Sublime 的标尺线(rulers)就是几条浅灰色垂直虚线,纯粹视觉提示,不干预编辑行为——它不会自动换行、不触发格式化、不报错、也不影响保存。你设了 "rulers": [80],只是告诉编辑器:“在第 80 个字符位置画条线”,仅此而已。
- 它按“逻辑列”计算:空格、制表符(
\t)、中文字符都算 1 列,和字体宽度无关;但等宽字体下对齐最准 - 它不感知软换行(
word_wrap):长行被折成多行后,标尺仍钉在原始第 80 列,不会跟着折行位置移动 - 它不是“开关式功能”:没有“启用标尺”菜单项(View → Ruler 是旧版/误传,当前稳定版 Sublime Text 4+ 已移除该路径)
怎么设置全局标尺(比如统一用 80 或 120)
直接改用户设置 JSON,一行生效,无需重启。
- 打开
Preferences → Settings,右侧是用户设置面板 - 添加或修改字段:
"rulers": [80](单线)或"rulers": [79, 120](双线,Python 推荐 79,团队宽屏常用 120) - 务必检查 JSON 格式:逗号不能多也不能少,结尾不能有逗号,引号必须是英文双引号
- 保存后立刻显示——如果没出现,大概率是 JSON 语法错误,可复制内容到 JSONLint 验证
怎么给 Python/JS 等语言单独设标尺
不同语言规范不同,硬套全局值反而碍事。Sublime 支持语法专属设置,优先级高于全局。
- 打开
Preferences → Settings – More → Syntax Specific – User - 确保顶部状态栏显示当前是
Python(或JavaScript),再粘贴:{"rulers": [79]} - 这个文件会自动保存为
Python.sublime-settings,只对.py文件生效 - 注意:若已存在其他配置(如
"tab_size"),需合并为合法 JSON 对象,不要覆盖整块
标尺配合什么才真正有用
标尺本身只是尺子,不帮你划线。要让代码真正在 80 列内,得靠其他机制协同。
-
"word_wrap": "auto"+"wrap_width": 80:开启软换行并指定折行列,但仅影响视觉,源码仍是单行长行 - 搭配 linter:ESLint 的
max-len、Flake8 的E501才会在超长时报错 - 配合格式化工具:Black(Python)、Prettier(JS)会在保存时自动折行,这时标尺就变成“校验线”而非“提醒线”
- 别指望改
rulers能解决缩进混乱问题:Tab 和空格混用会导致列数计算偏移,先统一用"translate_tabs_to_spaces": true
标尺线颜色无法原生修改,主题决定灰度深浅;想高亮或加粗?得靠插件(如 BracketHighlighter 的 ruler 扩展),但多数场景下,够用就行。










