有没有办法在Vim中同时显示 相对和绝对行号?无论是并排,还是其他一些有趣的演示都可以。
答案 0 :(得分:34)
是的,你可以。使用RltvNmbr.vim显示相对数字,并使用Vim显示绝对数字:
答案 1 :(得分:15)
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
也没有速度损失。据我所知。