aw. pourquoi diable cette question a-t-elle migré vers SU? Il s'agit d'une question de programmation liée à un outil de pré-programmation . Il n'obtient pas plus de SO que cela. Les programmeurs qui se concentrent sur SO (comme moi) ne pourraient plus trouver cette réponse car 5 personnes ne savent pas ce qu'est vim. Allez comprendre. MÉTA: meta.stackexchange.com/questions/25925/vim-questions-so-or-su
sehe
@sehe, je suis d'accord, c'est une question pour stackoverflow
juanpablo
Réponses:
9
if &nu == 1
set rnu
elseif &rnu == 1
set nornu
else
set nu
endif
merci Benoit, j'ajouté votre solution comme essentiel
juanpablo
1
@JuanPablo: mmm. Je préfère ma version :)
sehe
1
@sehe: Je dirais la même chose de ma version. :-)
17
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=1que définira implicitement norelativenumber - pour des raisons probablement trouvées dans la documentation :)
+1 car je peux le placer dans mon fichier .vimrc comme une ligne de nmap <F3> :exec &nu==&rnu? "se nu!" : "se rnu!"<CR>pour basculer entre trois options en utilisant F3.
3
vous pourriez faire ça nnoremap <silent> <F3>... pour réduire la distraction visuelle et interférer avec d'autres mappages.
sehe
Je suis venu avec presque la même (mais plus courte :-) ligne lors de la lecture de la question: exe'se'&nu+&rnu?'rnu!':'nu'.
Soit dit en passant, pour vous assurer de la connexion entre les options numberet relativenumber, consultez :helpg When setting this option.
@ib: merci pour le partage. J'adore vraiment vos golfs vim code - il y a des joyaux qui accélèrent vraiment mon travail quotidien; Dans ce cas, cependant, j'ai spécifiquement sélectionné ma version (un net 3 caractères de plus - en plus de la crampe de l'espace) car elle est lisible. À mon avis, il n'y a aucun avantage à le condenser davantage: il devient plus difficile à taper et beaucoup plus difficile à retenir même si vous avez déjà dû le taper de mémoire. Cela va être dans une cartographie. Ainsi , la version de Benoit est très bien, sauf pour ce qui ne figure bien sur une seule ligne
sehe
8
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 :
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>
Réponses:
la source
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):
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 :)la source
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
etrelativenumber
, 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 :
Basculer entre aucun nombre → absolu → relatif :
Basculer entre aucun nombre → absolu → relatif avec absolu sur la ligne du curseur :
la source
Pour ceux qui souhaitent une solution plus lisible, voici ce que j'ai dans mon .vimrc
La chose intéressante à ce sujet est que vous pouvez appuyer sur ctrl+ npour basculer entre les modes de nombre relatif et absolu!
la source
Une autre alternative comme Eric Anderson ci-dessus:
la source
la source