avec
setl nu!
Je peux basculer le nombre (on / off), similaire avec relativenumber
setl rnu!
comment puis-je basculer {off, number, relativenumber}?
avec
setl nu!
Je peux basculer le nombre (on / off), similaire avec relativenumber
setl rnu!
comment puis-je basculer {off, number, relativenumber}?
Réponses:
Parce que j'aime un puzzle logique, et je l'aime vraiment quand une commande vim tient sur une seule ligne pour des répétitions succinctes ( @:est un favori personnel):
:exec &nu==&rnu? "se nu!" : "se rnu!"
Cela maintiendra le même cycle. Je pense que c'est principalement parce let &nu=1
que définira implicitement norelativenumber - pour des raisons probablement trouvées dans la documentation :)
nmap <F3> :exec &nu==&rnu? "se nu!" : "se rnu!"<CR>
pour basculer entre trois options en utilisant F3.
nnoremap <silent> <F3>
... pour réduire la distraction visuelle et interférer avec d'autres mappages.
exe'se'&nu+&rnu?'rnu!':'nu'
.
number
et relativenumber
, consultez :helpg When setting this option
.
Depuis Vim 7.3.1115, cela est devenu un peu plus compliqué à faire.
La raison est qu'outre "aucun numéro de ligne" et "numéros de ligne absolus", il existe désormais deux paramètres pour les numéros de ligne relatifs: les "numéros de ligne relatifs" ordinaires et les "numéros de ligne relatifs avec un nombre absolu sur la ligne du curseur".
Plus techniquement parlant, les quatre combinaisons de 'number'
et 'relativenumber'
sont désormais possibles.
Voici comment basculer:
Basculez les quatre paramètres, pas de nombres → absolu → relatif → relatif avec absolu sur la ligne du curseur :
:exe 'set nu!' &nu ? 'rnu!' : ''
Basculer entre aucun nombre → absolu → relatif :
:let [&nu, &rnu] = [&nu+&rnu==0, &nu]
Basculer entre aucun nombre → absolu → relatif avec absolu sur la ligne du curseur :
:let [&nu, &rnu] = [!&rnu, &nu+&rnu==1]
Pour ceux qui souhaitent une solution plus lisible, voici ce que j'ai dans mon .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>
La chose intéressante à ce sujet est que vous pouvez appuyer sur ctrl+ npour basculer entre les modes de nombre relatif et absolu!
Une autre alternative comme Eric Anderson ci-dessus:
"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>
" 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>