vim: alterna o número com o número relativ

14

com

setl nu!

Eu posso alternar o número (ativado / desativado), semelhante a um número de relatividade

setl rnu!

como posso alternar {off, number, relativenumber}?

    
por juanpablo 24.09.2011 / 21:46

6 respostas

9
if &nu == 1
   set rnu
elseif &rnu == 1
   set nornu
else
   set nu
endif
    
por 24.09.2011 / 21:49
15

Porque eu adoro um quebra-cabeça lógico e realmente adoro quando um comando vim se encaixa em uma única linha para repetições sucintas ( @ : é um favorito pessoal):

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

Isso manterá o mesmo ciclo. Eu acho que é principalmente porque let &nu=1 irá implicitamente definir o número norelativista - por razões provavelmente encontradas na documentação:)

    
por 24.09.2011 / 22:19
8

A partir do Vim 7.3.1115 isso se tornou um pouco mais complicado de se fazer .

A razão é que, além de "sem números de linha" e "números de linha absoluta", existem agora duas configurações para números de linha relativos: "números de linhas relativas" comuns e "números de linhas relativas com número absoluto na linha do cursor ".

Mais tecnicamente falando, todas as quatro combinações de 'number' e 'relativenumber' são agora possíveis.

Veja como alternar:

  • Alterna as quatro configurações, sem números absoluto relativo relativo com absoluto na linha do cursor :

    :exe 'set nu!' &nu ? 'rnu!' : ''
    
  • Alterne entre sem números absoluto relativo :

    :let [&nu, &rnu] = [&nu+&rnu==0, &nu]
    
  • Alterna entre sem números absoluto relativo com absoluto na linha do cursor :

    :let [&nu, &rnu] = [!&rnu, &nu+&rnu==1]
    
por 06.06.2013 / 21:09
5

Para aqueles que gostariam de uma solução mais legível, o seguinte é o que eu tenho no meu .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>

O interessante disso é que você pode pressionar ctrl + n para alternar entre os modos de número relativo e absoluto!

    
por 28.08.2015 / 00:27
0
" put this in your .vimrc or source it from your .vimrc


  function! ToggleRelativeNumber()

      if &relativenumber

           set norelativenumber

      else

           set relativenumber

      endif

  endfunction

  nmap ;r :call ToggleRelativeNumber()<CR>
    
por 15.12.2015 / 06:04
-1

Outra alternativa como Eric Anderson acima:

"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>
    
por 06.12.2015 / 21:58

Tags