vscode 相对行号需在设置中手动开启,配置为"editor.relativelinenumbers": true,不可用已弃用的"editor.linenumbers": "relative";vim插件可能覆盖该设置,需检查版本及配置。

VSCode 开启 relativeLineNumbers 的正确配置位置
相对行号不是 Vim 插件或 Vim 模式自带的功能,而是 VSCode 原生设置项,必须在 VSCode 设置中显式开启。很多人装了 vim 插件后以为会自动启用,结果 j/k 跳转时发现行号没变——其实是根本没开。
打开设置(Ctrl+, 或 Cmd+,),搜索 relative line numbers,勾选 Editor: Relative Line Numbers;或者直接编辑 settings.json,加这一行:
"editor.relativeLineNumbers": true
注意:不要写成 "editor.lineNumbers": "relative" —— 这是旧版写法,VSCode 1.85+ 已弃用,会导致设置不生效。
为什么开了还是不显示?检查 Vim 插件是否覆盖了设置
vim 插件(特别是 vscodevim.vim)在启用时会悄悄重置部分编辑器行为,其中就包括行号显示逻辑。即使你手动开了 relativeLineNumbers,插件也可能在激活 Vim 模式时强制切回绝对行号。
- 确认插件版本 ≥ 1.27.0(老版本有已知 bug)
- 检查插件设置里有没有
vim.useSolidBlockCursor之类干扰渲染的选项,暂时关掉测试 - 在命令面板运行
Developer: Toggle Developer Tools,看控制台是否有Failed to resolve configuration for editor.lineNumbers类错误
配合 Vim 模式跳转:5j 和 3k 依赖的是当前光标所在行的相对编号
相对行号只对「以数字前缀的移动命令」有意义,比如 7j 表示向下跳 7 行,前提是第 7 行在当前视图内且有可见的相对编号(即未被折叠、未超出窗口范围)。
常见误操作:
- 光标在第一行时按
1k,不会报错但无响应——因为上方没有第 1 行可跳 - 滚动后相对编号动态刷新,但
10j仍按「当前屏幕内第 10 行」跳,不是文件第 10 行 - 开启代码折叠后,被折叠的区域不参与相对编号计数,容易跳偏
和绝对行号共存?VSCode 不支持双模式同时显示
VSCode 只允许一种行号模式:off / on(绝对)/ relative(相对)。想临时看绝对行号,只能临时关闭 relativeLineNumbers,或者用快捷键 Ctrl+Shift+P → 输入 Toggle Line Numbers 切换——但这会完全关掉行号,不是叠加显示。
真正实用的做法是:把 editor.lineNumbers 设为 on(绝对),再单独开 editor.relativeLineNumbers;但注意,两者不能同时为 true,VSCode 会优先采用 relativeLineNumbers 的值。所以别试图“兼顾”,Vim 场景下就老老实实只开相对模式。
相对行号看着别扭是初期反应,两周后基本就成肌肉记忆了;但一旦忘记它只在可视区域内有效,就容易在长文件里跳错——这是最常被忽略的边界条件。











