2011-11-30 117 views

回答

33

是的,可以。使用RltvNmbr.vim显示的相对数量,以及使用Vim显示绝对的:

enter image description here

+2

为什么没有标记为答案? –

+0

@ Fire-Dragon-DoL我已经安装了该插件,但需要在vim自身启动时显示它。我应该在'.vimrc'文件中输入什么内容? – noufal

+1

使这个插件真的减慢了整个vim当改变线条j/k .. – lszk

7

合理地讲,你不能。行编号是每个缓冲区一个,仅由'number'选项控制。

一个疯狂的概念,我想::vertical diffsplit:setlocal relativenumber。这会得到两个相邻的缓冲区副本,它们在滚动位置链接,因为它们处于差异模式。但是,它确实无法正常工作。在未成功更新的相对数(在7.3.154,错误可能以后固定的,但我怀疑它—这是不值的话),甚至如果他们这么做,你会与一个伟大的眼中钉,更难管理和导航被卡住。

你可以用插件写入一个特殊的缓冲区,你会继续在左边做,但实施将是丑陋的,它仍然会使导航硬(因为它的另一个缓冲区)。我当然不会花时间写这样一个插件,但我必须承认我想要显示两种线路编号形式。

+0

啊,你已经像我一样拼命思索了。 :) – mt3

+2

@ mt3,您可能有兴趣返回thia问答,并看到插件解决方案已发布为答案 –

+1

好吧,我已经取消选择这个接受,并选择了实际的插件。 – mt3

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

的Vim 7.4(补丁7.3.787)将显示的绝对行数,而不是“0”,当两个“relativenumber”和“号码”被设定。

:h relativenumber,7.3

如果将此选项设置, '数字' 复位。

:h relativenumber,7.4

在光标行的前面的数量也取决于 '编号' 的值,见| number_relativenumber |为两个 选项的所有组合。

5

结合plnx马卡里奥答案用vim 7.4。

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

这将显示相​​对编号(用绝对电流线)在聚焦窗口,和绝对在非聚焦的窗口。