VSCode 中可通过设置 "editor.rulers": [80, 120] 添加单行长度视觉提醒线,仅作辅助标尺,不报错、不格式化;支持全局或按语言(如 "[python]")配置,需确保 settings.json 中语法正确、数值为数组。

如何在 VSCode 中设置单行代码长度提醒线
VSCode 本身不强制截断或格式化超长行,但可以通过 rulers 设置视觉参考线,帮助你肉眼识别是否超过 80 或 120 字符。这不是语法检查,而是编辑器层面的标尺提示。
关键点:它只画一条竖线,不报错、不自动换行、也不影响保存或运行 —— 纯属辅助对齐用。
- 配置位置是工作区或用户设置中的
"editor.rulers" - 值为数组,每个数字代表一列位置(从 1 开始计数),例如
[80, 120]就会在第 80 列和第 120 列各画一条线 - 该设置对所有语言生效;如只想对 Python 启用,需放在对应语言的
"[python]"块下
为什么设成 80 或 120 而不是其他数字
80 是传统终端宽度标准(尤其 Unix/Linux 默认 terminal 宽度),也常见于 PEP 8(Python)、Google Java Style 等规范中;120 更适合现代宽屏开发,兼顾可读性与横向空间利用率。
注意:这不是硬性限制,black、prettier 等格式化工具有自己的规则,它们可能按语义换行(比如函数调用参数拆多行),而 ruler 只管总字符数 —— 所以两者常配合使用,但目标不同。
- 如果你用
prettier,它的默认printWidth: 80和 ruler 80 一致,视觉和实际格式化结果更匹配 - 若项目要求严格 80,建议同时启用
prettier或black自动格式化,仅靠 ruler 容易忽略嵌套结构里的“隐形超长” - 中文字符、全角符号、制表符(
\t)都会被算作 1 字符,但实际显示宽度可能大于 1 列 —— ruler 不处理这个差异
常见误配导致 ruler 不显示
ruler 不出现,大概率不是插件问题,而是配置写错位置或格式不对。
- 确保写在
settings.json里,而不是 UI 设置界面(UI 里搜不到rulers) - 不要写成
"editor.ruler"(少个s)或"rulers"(缺editor.前缀) - 值必须是数字数组,不能是字符串,比如
"[80]"或80都无效 - 如果用了
"[python]"语言专属配置,记得检查当前文件右下角语言模式是否确实是Python(有时是Plain Text)
和 linter / formatter 的关系怎么理清
ruler 是编辑器层的“尺子”,linter(如 pylint、eslint)才是真报警的;formatter(如 prettier)是动手改代码的。三者可以共存,但职责分明。
-
pylint的C0301: line-too-long错误会指出超长行,但默认阈值是 100,需手动配max-line-length=80 -
prettier的printWidth控制自动换行点,但它不会让代码“看起来短”——比如一个长字符串仍会占满一行,ruler 还是会标出来 - 真正容易被忽略的是注释和 docstring:它们不受大多数 formatter 影响,却常悄悄突破 80,这时 ruler 反而是最直接的提醒
别指望 ruler 替代代码审查,它只是帮你少低头数空格。真正的约束得靠 CI 里的 linter 检查和 pre-commit hook 强制格式化。











