vscode行号未显示大概率是editor.linenumbers被设为"off"或被工作区配置覆盖;最快解决方式是ctrl+,搜索line numbers并选择on/relative/off/interval,修改后立即生效,无需重启。

行号没显示,大概率不是 VSCode 坏了,而是 editor.lineNumbers 被设成了 "off",或者被工作区配置悄悄覆盖了。
怎么立刻打开或切换行号模式
最稳的操作是快捷键进设置:按 Ctrl + ,(Windows/Linux)或 Cmd + ,(macOS),在搜索框输入 line numbers,找到 Editor: Line Numbers 项,从下拉菜单选 on、relative、off 或 interval 即可。改完立即生效,不用重启。
临时开关当前编辑器的行号(不保存):右键编辑器左侧空白区域 → 点击 Toggle Line Numbers。这个只影响当前窗口,关掉再开就没了。
为什么改了 settings.json 还不显示行号
常见原因有三个:
-
editor.lineNumbers的值写成了true、"true"、1或漏引号——VSCode 只认"on"、"off"、"relative"、"interval"这四个字符串,其他一律静默忽略 - 工作区配置(
.vscode/settings.json)覆盖了用户设置。打开命令面板(Ctrl + Shift + P),执行Preferences: Open Workspace Settings (JSON),检查里面有没有重复或冲突的editor.lineNumbers - 字段名拼错,比如写成
editor.lineNumber(少个s)或line_numbers(VSCode 不支持下划线命名)
relative 模式下数字“跳变”是不是 bug
不是 bug,是设计行为。相对行号基于光标位置实时计算,一旦发生代码折叠、展开、插入/删除空行,下方所有行的相对值都会重算。
比如光标在第 50 行,折叠一个 10 行函数后,原来第 60 行变成第 51 行,相对值就从 10 变成 1。这对 Vim 模式下的 8j、12k 是优势,但如果你依赖固定偏移做批量操作(比如正则替换某几行),就得切回 "on" 模式。
另外注意:"relative" 和 editor.relativeLineNumbers: true 不是同一回事——后者是旧版 Vim 插件用的弃用字段,混用可能引发冲突。
Terminal / Git 视图里为什么没行号
VSCode 的 editor.lineNumbers 只控制主编辑器区域,对终端(Terminal)、Git 差异视图(Git: Show Changes)、搜索结果(Find in Files)等面板完全无效。
这些地方想看行号得靠命令本身,比如在终端里用 cat -n file.js 或 less -N file.js;Git 差异里点变更块,光标会自动跳到对应行——行号虽不显示,定位逻辑照常工作。
真正容易被忽略的是工作区优先级和字符串合法性:你改的 settings.json 可能根本没被读到,或者值写对了但格式错了,VSCode 就当它不存在。











