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

在Vim中同时显示相对和绝对行号,vim,Vim,有没有办法在Vim中同时显示相对和绝对行号?并排或其他有趣的演示都可以。合理地说,你不能。行编号为每个缓冲区一个,仅由'number'选项控制 我尝试过一个疯狂的想法::垂直diffsplit加上:setlocal RelativeEnumber。这将获取相邻的两个缓冲区副本,它们在滚动位置链接,因为它们处于差异模式。然而,它确实不能正常工作。相关数字没有成功更新(在7.3.154上,bug可能会在以后修复,但我怀疑这不值得),即使更新了,你也会被困在一个巨大的视觉障碍和更难的管理和导航中 你可

有没有办法在Vim中同时显示相对绝对行号?并排或其他有趣的演示都可以。

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

我尝试过一个疯狂的想法:
:垂直diffsplit
加上
:setlocal RelativeEnumber
。这将获取相邻的两个缓冲区副本,它们在滚动位置链接,因为它们处于差异模式。然而,它确实不能正常工作。相关数字没有成功更新(在7.3.154上,bug可能会在以后修复,但我怀疑这不值得),即使更新了,你也会被困在一个巨大的视觉障碍和更难的管理和导航中


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

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

输入窗口将窗口设置为相对数,而保留窗口将其设置为绝对数。 然后,如果您对窗口进行垂直拆分,您将使用相同的缓冲区和相对数和绝对数

" 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>
“设置全局相对枚举器
autocmd WinEnter*:设置本地相对枚举器
autocmd WinLeave,FocusLost*:设置本地号码
autocmd插入器*:设置本地号码
autocmd InsertLeave*:设置本地相对枚举器
函数!g:ToggleNuMode()
如果(&relativeEnumber==1)
设定数
其他的
集合相对枚举器
恩迪夫
endfunc
映射:调用g:ToggleNuMode()
可以。使用显示相对数字,使用Vim显示绝对数字:

Vim 7.4(补丁)将在同时设置“RelativeEnumber”和“number”时显示绝对行号,而不是“0”

From
:h relativeEnumber
,7.3

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

From
:h relativeEnumber
,7.4

光标行前面的数字也取决于 “数字”,请参见|数字|有关这两个数字的所有组合 选项


结合plnxMacario与vim 7.4的答案

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

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

多年后,此功能现在是Vim的一部分,称为混合编号

您可以通过输入以下内容来启用此功能:

:set number relativenumber

也没有速度惩罚。据我所知。

啊,你已经和我一样拼命地考虑过了。@mt3,你可能有兴趣返回thia问答,看看一个插件解决方案已经作为答案发布了好的,我已经取消选择了这个,并选择了实际的插件。@Fire Dragon DoL我已经安装了那个插件,但需要它将显示在vim本身的开始部分。我应该在
.vimrc
文件中输入什么?启用此插件确实会降低整个vim的速度,例如,当通过j/k更改行时。即使直接跳到行,每一行的刷新率都很低jump@Fire-Dragon DoL修复了!我安装了这个插件。每当我移动时,它都会减慢vim的速度上/下一行(k/j),在打开和处理缓冲区时,它似乎不起作用。这些问题是否有解决方案?对我来说,这不会在新打开的文件上触发(从命令行或ctrl-p),因此我将
autocmd-WinEnter,focusgaund
更改为
autocmd-BufReadPre,FileReadPre,WinEnter,focusgaund
您使用的是哪个版本的
vim
?适用于我在
vim
gvim
中使用的
8.1.1467
。(
vim测试
gvim测试
,切换到插入模式,键入几行,切换回正常模式,上下导航。)neovim@head.它在进入和退出插入模式时对我有效,但在打开新文件时无效。必须是带有neovim的增量文件。(我只使用(g)vim)。可能会打开一个错误报告?未受影响。vim有一个切换映射
yor
,可以方便地快速查看绝对数,然后返回混合设置。