VSCode行号仅在主编辑器生效,需用字符串值如"on"配置;工作区设置优先覆盖用户设置,搜索、Notebook等区域须单独配置。

VSCode 的行号显示是全局生效的,但“全局”有明确范围限制:它只作用于主编辑器区域,不覆盖终端、Git 差异视图、搜索结果面板或 Notebook 单元格——这些地方需要单独配置。
editor.lineNumbers 必须用字符串值
在 settings.json 里写 "editor.lineNumbers": "on" 才有效。写成 true、"true"、1 或漏掉引号(如 on)都会被 VSCode 静默忽略,行号不显示且无任何提示。
-
"on":从第 1 行开始显示绝对行号,最直观,适合多数人 -
"relative":光标所在行为 0,上下按物理行递增/递减,Vim 模式下5j、12k更易判断距离 -
"off":完全隐藏行号 -
"interval":仅部分主题支持,实际间隔不可控,日常开发基本不用
工作区设置会覆盖用户设置
如果你在项目根目录有 .vscode/settings.json,里面定义了 editor.lineNumbers,那它会直接压过你用户级的设置——哪怕你改了全局设置也看不到效果。
- 按
Ctrl + ,打开设置,右上角确认当前是“用户”标签页,不是“工作区” - 搜索
editor.lineNumbers,看右侧是否显示“已由工作区设置覆盖” - 想统一管理?删掉工作区中的该字段,或显式设为和用户设置一致的值
搜索结果、Notebook、终端的行号要单独开
主编辑器的 editor.lineNumbers 对这些区域完全无效:
- 搜索结果面板:需开启
"search.showLineNumbers": true - Jupyter Notebook 单元格:需配置
"notebook.lineNumbers": "on" - 终端(Terminal)和 Git 差异视图:原生不支持行号,只能靠命令辅助,比如在终端中执行
cat -n file.js
真正容易被忽略的是两点:一是字符串值合法性(VSCode 不报错但不生效),二是工作区设置的优先级——你改了半天 settings.json,可能只是在给一个被覆盖的配置打补丁。











