如何显示相对行号?


52

许多vim命令可以使用一个数字来表示该命令将要执行的行数。

是否可以显示相对于当前行的行号?类似于以下内容:

3: some text here
2: more text
1: This is the line above where the cursor is
0: The cursor is on this line
1: This is the line after the cursor
2: More text here

Answers:


64

我在这里回答了一个类似的问题:如何在Vim中添加行号?

从7.3版开始,您可以使用以下内容:

set relativenumber

我实际上在vimrc中同时使用relativenumbernumber,它将在除当前行以外的所有行中使用相对数字。

set number                     " Show current line number
set relativenumber             " Show relative line numbers

不确定,但是它提到的第一个变更日志是7.3。ftp.vim.org/pub/vim/patches/7.3/README
Collin Peters,

7

您可以使用以下方法打开和关闭相对编号:

:set rnu    " toggle relative numbering on
:set rnu!   " toggle relative numbering off

5
function! NumberToggle()
  if(&relativenumber == 1)
    set norelativenumber
  else
    set relativenumber
  endif
endfunc

nnoremap <leader>nt :call NumberToggle()<cr>

2
norelativenumber会完全关闭编号还是切换为常规编号?
尼克·J·亚当斯

set number是控制数字存在的设置,因此它将仅在rel和non-rel之间切换
shawndumas

2
numbers.vim插件还添加了一些更高级的相对编号功能,例如让光标占据打印非相对编号的行,并在vim窗口失去焦点时在整个文件中切换为非相对编号。
古铜色维克2015年

1
@shawndumas,那么显示的数字优先吗?例如,如果我在vimrc中设置了编号,并调用了relativenumber / norelativenumber设置,是否可以在相对编号和标准编号之间切换?
尼克·J·亚当斯

1
那是最正确的
shawndumas

4

如果您想使用热键来切换相对行号,这是我的vimrc中的一个片段:

" Toggle relative line number
nmap <C-L><C-L> :set invrelativenumber<CR>

在这种情况下,我两次使用ctrl-L进行切换。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.