在Vim中同时显示相对和绝对行号

时间:2011-11-30 10:20:32

标签: vim

有没有办法在Vim中同时显示 相对绝对行号?无论是并排,还是其他一些有趣的演示都可以。

6 个答案:

答案 0 :(得分:34)

是的,你可以。使用RltvNmbr.vim显示相对数字,并使用Vim显示绝对数字:

enter image description here

答案 1 :(得分:15)

当设置“relativenumber”和“number”时,

Vim 7.4(Patch 7.3.787)将显示绝对行号而不是“0”。

来自:h relativenumber,7.3

  

设置此选项时,“数字”会重置。

来自:h relativenumber,7.4

  

光标线前面的数字也取决于值   'number',见| number_relativenumber |对于两者的所有组合   选项。

答案 2 :(得分:7)

合理地说,你做不到。行号是每缓冲一个,仅由'number'选项控制。

我尝试过一个疯狂的想法::vertical diffsplit:setlocal relativenumber。这使得缓冲区的两个副本彼此相邻,在滚动位置链接,因为它们处于diff模式。但是,它确实无法正常工作。相对数字没有成功更新(在7.3.154,后面可能修复的bug,但我怀疑它 - 它几乎不值得),即使它们确实如此,你仍然会被一个伟大的眼睛和更难的管理和导航困住

你可以用一个插件写入一个特殊的缓冲区,你会保留在左边,但是实现会很难看,而且它仍然会导致导航很难(因为它是另一个缓冲区)。我当然不打算花时间写这样的插件,虽然我必须承认我想展示两种形式的行号。

答案 3 :(得分:5)

plnx Macario 答案与vim 7.4结合使用。

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

在聚焦窗口中显示相对编号(当前行为绝对值),在非聚焦窗口中显示绝对值。

答案 4 :(得分:2)

这是我与相对和绝对行号相关的映射  在相对和绝对之间切换。

进入窗口将窗口设置为相对数字,同时将其设置为绝对值。 然后,如果你对窗口进行垂直分割,你将使用相对和绝对数字来设置相同的缓冲区。

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

答案 5 :(得分:0)

很多年后,此功能现在已成为Vim的一部分,被称为混合数字。

您可以通过输入以下内容来打开此功能:

:set number relativenumber

也没有速度损失。据我所知。