vscode行号由editor.linenumbers字符串枚举值控制,默认开启但易被覆盖;常见失效原因包括工作区设置优先级更高、扩展冲突、误写true/1等非法值,且relative模式需配合editor.relativelinenumbers:true而非旧式"relative"。

VSCode 行号默认开启,但实际是否显示、显示成什么样,完全由 editor.lineNumbers 控制——它不是布尔开关,而是一个字符串枚举值,写错就失效。
为什么改了 settings.json 还不显示行号
最常见原因是设置被覆盖:工作区设置(.vscode/settings.json)优先级高于用户设置,如果里面写了 "editor.lineNumbers": "off",哪怕用户全局设为 "on" 也无效。
- 打开设置界面(
Ctrl + ,),切换到「Workspace」标签页,搜索line numbers,确认没被显式关掉 - 检查是否有扩展在运行时注入配置(如旧版 Bracket Pair Colorizer、某些主题插件),临时禁用 UI 类扩展再试
-
editor.lineNumbers必须是字符串:"on"、"off"、"relative"或"interval";写成true、1、"True"都会静默失败
relative 模式不是 editor.lineNumbers: "relative"?
这是个关键混淆点:VSCode 官方早已弃用 "editor.lineNumbers": "relative" 写法。现在正确做法是:
- 保持
editor.lineNumbers为"on"(或"interval") - 额外启用
editor.relativeLineNumbers(布尔值,设为true) - 二者叠加后,左侧同时显示绝对行号 + 相对偏移(需主题支持,如默认
Dark+可以,GitHub Darkv1.x 不支持)
如果你用的是 vscode-neovim 插件,它可能仍兼容旧写法,但纯 VSCode 环境下请按新规则配,否则相对数不会出现。
微软正式发布 Visual Studio Code 1.118 版本 。本次更新重点强化了 AI 开发体验与企业管理能力,其中最引人注目的是新增 Copilot CLI 远程控制功能,允许开发者通过手机或网页远程监控和接管 AI 会话 。同时,为了提高 AI 的运行性价比,新版本优化了令牌缓存策略以降低成本 。此外,1.118 版还引入了 Chronicle 本地历史追踪、TypeScript 7.0 支持以及更严格的企业级访问管控 。
不同场景该选哪种模式
editor.lineNumbers 的四个取值不是功能差异,而是使用意图差异:
-
"on":调试、Git blame、Code Review 时需要精确定位某一行,比如报错信息里写的index.ts:42 -
"relative"(已弃用)→ 实际应配"on"+editor.relativeLineNumbers: true:Vim 用户按5j、3k或Ctrl+G输入+3跳转时更直观 -
"interval":超大日志文件或数据文件中快速锚定段落(如每 10 行标一个数),但部分主题不渲染空行号,效果不稳定 -
"off":极少数全屏写作/演示场景,且确认不需要任何行定位能力
注意:"relative" 模式下折叠代码块会导致下方行的相对数值重算——这不是 bug,是设计行为,别因此怀疑配置出错。
Jupyter Notebook 和搜索面板要单独开
普通编辑器的 editor.lineNumbers 对 Notebook 单元格和搜索结果面板无效:
- Jupyter 行号由
notebook.lineNumbers控制,值同样为"on"/"off" - 搜索面板行号需单独开启:设置里搜
search.showLineNumbers,设为true
这些选项互不影响,也都不继承自 editor.lineNumbers,漏配就会发现「怎么 notebook 里没行号?」——其实只是忘了加那行。










