vim:使用相对数字切换数字

vim:使用相对数字切换数字

setl nu!

我可以切换数字(开/关),与相对数字类似

setl rnu!

我如何切换 {off,number,relativenumber} ?

答案1

if &nu == 1
   set rnu
elseif &rnu == 1
   set nornu
else
   set nu
endif

答案2

因为我喜欢逻辑谜题,并且非常喜欢 vim 命令在一行中简洁地重复(@:这是我个人的最爱):

:exec &nu==&rnu? "se nu!" : "se rnu!"

这将保持相同的循环。我认为这主要是因为let &nu=1将隐式设置 norelativenumber - 原因可能在文档中找到 :)

答案3

对于那些想要更易读的解决方案的人来说,以下是我在 .vimrc 中的内容

" Relative or absolute number lines
function! NumberToggle()
    if(&nu == 1)
        set nu!
        set rnu
    else
        set nornu
        set nu
    endif
endfunction

nnoremap <C-n> :call NumberToggle()<CR>

很酷的是,您可以按ctrl+n在相对数字模式和绝对数字模式之间切换!

答案4

另一种选择是艾瑞克·安德森多于:

"Relative with start point or with line number or absolute number lines
function! NumberToggle()
    if(&number == 1)
        set number!
        set relativenumber!
      elseif(&relativenumber==1)
        set relativenumber
        set number
      else
        set norelativenumber
        set number                                                  
    endif
endfunction

nnoremap <C-n> :call NumberToggle()<CR>

相关内容