Отображение относительных и абсолютных номеров строк одновременно в Vim - PullRequest
44 голосов
/ 30 ноября 2011

Есть ли способ одновременно отображать оба относительно и абсолютные номера строк в Vim? Либо бок о бок, либо какая-то другая интересная презентация подойдет.

Ответы [ 5 ]

34 голосов
/ 18 мая 2013

Да, вы можете. Используйте RltvNmbr.vim для отображения относительных чисел и используйте Vim для отображения абсолютных чисел:

enter image description here

15 голосов
/ 26 сентября 2013

Vim 7.4 (Patch 7.3.787 ) будет показывать абсолютный номер строки вместо «0», когда установлены и «относительный номер», и «номер».

С :h relativenumber, 7,3

При настройке этой опции «номер» сбрасывается.

С :h relativenumber, 7,4

Число перед строкой курсора также зависит от значения 'number', см. | Number_relativenumber |для всех комбинаций двух вариантов.

7 голосов
/ 30 ноября 2011

По правде говоря, вы не можете. Нумерация строк - одна на буфер, управляется исключительно параметром 'number'.

Одна сумасшедшая мысль, которую я попробовал: :vertical diffsplit плюс :setlocal relativenumber. Это получает две копии буфера рядом друг с другом, связанные в положении прокрутки, потому что они находятся в режиме сравнения. Тем не менее, это действительно не работает должным образом. Относительные числа не обновляются успешно (в 7.3.154 ошибка может быть исправлена ​​позже, но я сомневаюсь, что это вряд ли стоит), и даже если бы они сделали это, вы застряли бы с большим раздражением глаз и более сложным управлением и навигацией .

Вы могли бы сделать это с помощью плагина, записывающего в специальный буфер, который вы бы оставили слева, но реализация была бы уродливой, и это все равно усложнило бы навигацию (потому что это еще один буфер). Я, например, не собираюсь тратить время на написание такого плагина, хотя должен признаться, что хотел бы показать обе формы нумерации строк.

5 голосов
/ 01 марта 2014

Объединение plnx и Macario ответов с vim 7.4.

autocmd WinEnter,FocusGained * :setlocal number relativenumber
autocmd WinLeave,FocusLost   * :setlocal number norelativenumber

Отображает относительную нумерацию (с текущей строкой в ​​абсолютном) в сфокусированном окне и абсолютную в не сфокусированном окне.

2 голосов
/ 12 апреля 2013

Это мои сопоставления, относящиеся к относительным и абсолютным номерам строк, которые переключаются между относительными и абсолютными.

При входе в окно устанавливается относительное число окна, в то время как в нем устанавливается абсолютное значение.Затем, если вы сделаете вертикальное разделение окна, вы увидите тот же буфер с относительными и абсолютными числами.

" setglobal relativenumber
autocmd WinEnter * :setlocal relativenumber
autocmd WinLeave,FocusLost * :setlocal number
autocmd InsertEnter * :setlocal number
autocmd InsertLeave * :setlocal relativenumber

function! g:ToggleNuMode()
  if(&relativenumber == 1)
    set number
  else
    set relativenumber
  endif
endfunc

map <C-l> :call g:ToggleNuMode()<CR>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...