【发布时间】:2019-12-29 06:18:04
【问题描述】:
有没有办法在 Vim 中同时显示 relative 和 absolute 行号?并排或其他一些有趣的演示都可以。
【问题讨论】:
-
Unmpaired.vim 有一个切换映射
yor,可以方便地快速查看绝对数字,然后返回混合设置。 github.com/tpope/vim-unimpaired/blob/…
标签: vim
有没有办法在 Vim 中同时显示 relative 和 absolute 行号?并排或其他一些有趣的演示都可以。
【问题讨论】:
yor,可以方便地快速查看绝对数字,然后返回混合设置。 github.com/tpope/vim-unimpaired/blob/…
标签: vim
是的,你可以。使用RltvNmbr.vim显示相对数,使用Vim显示绝对数:
【讨论】:
.vimrc 文件中输入什么?
.vimrc 中启用此插件:call RltvNmbr#RltvNmbrCtrl(1)
Vim 7.4 (Patch 7.3.787) 将显示绝对行号而不是 "0",当 "relativenumber" 和 "number" 都设置时。
来自:h relativenumber,7.3
设置此选项时,“数字”被重置。
来自:h relativenumber,7.4
光标行前面的数字也取决于 '数字',见 |number_relativenumber|对于两者的所有组合 选项。
【讨论】:
按理说,你不能。行号是每个缓冲区一个,仅由 'number' 选项控制。
我尝试了一个疯狂的想法::vertical diffsplit 加上:setlocal relativenumber。这会得到两个相邻的缓冲区副本,在滚动位置链接,因为它们处于差异模式。但是,它确实无法正常工作。相对数字没有成功更新(在 7.3.154 上,错误可能会在以后修复,但我对此表示怀疑——这几乎不值得),即使他们这样做了,你也会被困在一个非常碍眼和更难的管理和导航中.
您可以通过将插件写入您将保留在左侧的特殊缓冲区来做到这一点,但是实现会很丑陋,并且仍然会使导航变得困难(因为它是另一个缓冲区)。我当然不会花时间编写这样的插件,但我必须承认我想展示这两种形式的行号。
【讨论】:
多年后,这个功能现在是 Vim 的一部分,被称为混合数字。
您可以通过输入:
打开此功能:set number relativenumber
也没有速度惩罚。据我所知。
【讨论】:
将 plnx 和 Macario 答案与 vim 7.4 结合。
autocmd WinEnter,FocusGained * :setlocal number relativenumber
autocmd WinLeave,FocusLost * :setlocal number norelativenumber
这会在焦点窗口中显示相对编号(当前行在绝对值中),在非焦点窗口中显示绝对值。
【讨论】:
autocmd WinEnter,FocusGained 更改为 autocmd BufReadPre,FileReadPre,winenter,focusgained
vim?在 Void Linux 上,vim 和 gvim 中的 8.1.1467 都适用于我。 (vim test 或 gvim test,切换到 INSERT 模式,键入几行,切换回 NORMAL 模式,上下导航。)
这是我与相对和绝对行号相关的映射 在相对和绝对之间切换。
进入窗口会将窗口设置为相对数字,而离开则将其设置为绝对数字。 然后,如果您对窗口进行垂直拆分,您将使用相对和绝对数字设置相同的缓冲区。
" 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>
【讨论】: