vim 和 vscode 的 “ 智能 ” 相对行号

vim 的 “智能” 相对行号

为了能够通过 10j 或者 20k 来切换到后几行或者前几行,又不想计算行号,那就需要设置相对行号了。

可以通过

:set relativenumber

设置 vim 的显示为相对行号(如下图)
image

但是当前行显示为 0 了,我想要显示当前行的绝对行号,那就再设置一下绝对行号

:set number

image

因为移动光标的时候只能在 normal 模式,那我想要在进入 insert 模式之后显示绝对行号,就可以设置一下 “智能” 的相对行号。在 .vimrc 文件添加自动命令(参考了这里):

augroup numbertoggle
  autocmd!
  autocmd BufEnter,FocusGained,InsertLeave,WinEnter * if &nu && mode() != "i" | set rnu   | endif
  autocmd BufLeave,FocusLost,InsertEnter,WinLeave   * if &nu                  | set nornu | endif
augroup END

这样,在进入 insert 模式之后就能显示绝对行号,而退出到 normal 模式就恢复上面说的相对行号的显示了。
image

vscode 的 “智能” 相对行号

在 vscode 里也安装了 vim 插件,在 settings.json 文件写了 vimrc 的设置:

"vim.vimrc.path": "/path/to/your/vimrcpath/.vimrc",
"vim.vimrc.enable": true,

给小白提个醒,上面的 /path/to/your/vimrcpath 要替换成你的 vimrc 文件所在的目录

但是却不能跟 vim 一样应用到那个 “智能” 相对行号。
但是在设置页面有一个项 Smart Relative line
image

勾选上之后,把上面的 Controls the display of line Numbers 设置为 relative 就能跟 vim 的效果一样啦。

可以搜索 linenumbers 来快速找到这两个设置

posted @ 2025-12-07 16:44  PenGoFox  阅读(59)  评论(0)    收藏  举报