Подтвердить что ты не робот

Показывать относительные и абсолютные номера строк одновременно в Vim

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

4b9b3361

Ответ 1

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

enter image description here

Ответ 2

Vim 7.4 (Патч 7.3.787) покажет абсолютный номер строки вместо "0", когда будут установлены как "relativenumber", так и "number".

От :h relativenumber, 7.3

При установке этой опции "номер" reset.

От :h relativenumber, 7.4

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

Ответ 3

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

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

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

Ответ 4

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

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

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

Ответ 5

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

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

" 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>