Как я могу показать относительные номера строк?

53

Многие команды 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
Ник Дж Адамс
источник

Ответы:

65

Я только что ответил на похожий вопрос: как я могу добавить номера строк в Vim?

Начиная с версии 7.3, вы можете использовать следующее:

set relativenumber

Я на самом деле использую оба relativenumberи numberв моем vimrc, который будет использовать относительные числа для всех строк, кроме текущей строки.

set number                     " Show current line number
set relativenumber             " Show relative line numbers
Коллин Питерс
источник
Не совсем точно, но первый список изменений, о котором упоминается, - 7.3. ftp.vim.org/pub/vim/patches/7.3/README
Коллин Питерс
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>
shawndumas
источник
2
Нормативное число просто полностью отключает нумерацию или же оно переключается на обычную нумерацию?
Ник Дж. Адамс
set numberэто параметр, который контролирует наличие чисел, поэтому он будет переключаться только между rel и non-rel
shawndumas
2
numbers.vimПлагин также добавляет некоторые более продвинутые функции относительного числа, например , имеющую линию курсор занимает печать , не относительное число, и переключение на неродственного нумерации в течение всего файла , когда окно теряет фокус ВИМ.
бронзовый хик
1
@shawndumas, так есть ли приоритет, какие цифры отображаются? Например, если бы я установил номер в моем vimrc и вызвал setalnumber / norelativenumber, может ли он переключаться между относительной и стандартной нумерацией?
Ник Дж. Адамс
1
это наиболее правильно
Shawndumas
4

Если вы хотите использовать горячую клавишу для переключения относительного номера строки, вот фрагмент в моем vimrc:

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

В этом случае я использую Ctrl-L дважды, чтобы переключить его.

Шон Ли
источник