vscode行号默认开启但常被配置覆盖;最快开关方式是ctrl+,搜索“line numbers”修改,或右键编辑器侧边栏切换;值必须为"on"/"off"/"relative"/"interval"字符串,且工作区配置优先级高于用户设置。

VSCode 默认开启行号,但经常被用户设置覆盖或误关——所以你没看到行号,大概率不是软件问题,而是 editor.lineNumbers 被设成了 "off" 或工作区配置优先级更高。
怎么快速打开或关闭行号显示
最稳的方式是快捷键进设置:按 Ctrl + ,(Windows/Linux)或 Cmd + ,(macOS),在搜索框输入 line numbers,找到 Editor: Line Numbers 项,从下拉菜单选 on、off、relative 或 interval 即可。改完立刻生效,不用重启。
临时开关当前编辑器的行号(不保存设置):右键编辑器左侧空白区域 → 点击 Toggle Line Numbers。这个操作只影响当前窗口,关掉再开就没了。
-
"on":显示绝对行号(1, 2, 3…),适合日常阅读和 Git blame -
"off":彻底隐藏,省点横向空间,但调试时会很不方便 -
"relative":光标所在行为0,上下行分别是 ±1、±2…,对 Vim 模式跳转(如5j、12k)极友好 -
"interval":每 10 行标一个数字(如第 10、20、30 行),部分主题支持不全,实际用得少
为什么改了 settings.json 没反应
常见原因是工作区(.vscode/settings.json)或文件夹级配置覆盖了用户级设置。VSCode 配置优先级是:工作区 > 用户 > 默认。打开命令面板(Ctrl + Shift + P),输入并执行 Preferences: Open Workspace Settings (JSON),检查里面有没有重复的 editor.lineNumbers 字段。
另一个高频坑:editor.lineNumbers 的值必须是字符串,不是布尔值。写成 true、false 或 "true" 都无效,只认 "on"、"off"、"relative"、"interval" 这四个字符串。
- 别写
"editor.lineNumbers": true—— VSCode 直接忽略 - 别写
"editor.lineNumbers": "relative"同时又装了旧版 Vim 插件 —— 某些老版本插件会强制覆盖为editor.relativeLineNumbers: true(已弃用) - 如果用的是 Remote-SSH 连服务器,记得在远程环境里也配一次,本地设置不会自动同步过去
relative 模式下数字“跳变”是不是 bug
不是 bug,是设计行为。相对行号基于当前光标位置实时计算,一旦代码折叠/展开、插入/删除空行,下方所有行的相对距离都会重算。比如光标在第 50 行,折叠一个 10 行的函数后,原来第 60 行变成第 51 行,相对值就从 10 变成 1。
这在 Vim 模式下反而是优势:你想往下跳 8 行,看一眼左边数字是 8 就按 8j,不用数。但如果你依赖固定偏移做批量操作(比如正则替换某几行),就得切回 "on" 模式。
- 折叠不影响绝对行号显示,只影响 relative 计算逻辑
- 多光标编辑时,relative 行号只反映主光标位置,其他光标不参与计算
- 终端、输出面板、调试控制台等非编辑器界面不支持 relative 行号
真正容易被忽略的是工作区配置和 Remote-SSH 场景下的双重设置——很多人在家调好了,一连公司服务器发现行号又没了,其实是远程那边的 .vscode/settings.json 把它关了。











