mit
setl nu!
Ich kann die Nummer (ein / aus) umschalten, ähnlich wie bei der relativen Nummer
setl rnu!
Wie kann ich {off, number, relativenumber} umschalten?
mit
setl nu!
Ich kann die Nummer (ein / aus) umschalten, ähnlich wie bei der relativen Nummer
setl rnu!
Wie kann ich {off, number, relativenumber} umschalten?
Antworten:
if &nu == 1
set rnu
elseif &rnu == 1
set nornu
else
set nu
endif
Weil ich ein logisches Puzzle liebe und es wirklich liebe, wenn ein vim-Befehl für kurze Wiederholungen in eine einzelne Zeile passt ( @:ist ein persönlicher Favorit):
:exec &nu==&rnu? "se nu!" : "se rnu!"
Dies wird den gleichen Zyklus beibehalten. Ich denke, es liegt hauptsächlich daran, let &nu=1
dass implizit norelativenumber gesetzt wird - aus Gründen, die wahrscheinlich in der Dokumentation zu finden sind :)
nmap <F3> :exec &nu==&rnu? "se nu!" : "se rnu!"<CR>
, um mit F3 zwischen drei Optionen umzuschalten .
nnoremap <silent> <F3>
um die visuelle Ablenkung zu verringern und andere Zuordnungen zu stören.
exe'se'&nu+&rnu?'rnu!':'nu'
.
number
und relativenumber
Optionen zu überzeugen, siehe :helpg When setting this option
.
Ab Vim 7.3.1115 ist dies etwas komplizierter.
Der Grund ist, dass es neben "keine Zeilennummern" und "absolute Zeilennummern" jetzt zwei Einstellungen für relative Zeilennummern gibt: gewöhnliche "relative Zeilennummern" und "relative Zeilennummern mit absoluter Zahl in der Cursorzeile".
Technisch sind nun alle vier Kombinationen von 'number'
und 'relativenumber'
möglich.
So schalten Sie um:
Alle vier Einstellungen umschalten, keine Zahlen → absolut → relativ → relativ mit absolut in der Cursorzeile :
:exe 'set nu!' &nu ? 'rnu!' : ''
Umschalten zwischen ohne Zahlen → absolute → relativ :
:let [&nu, &rnu] = [&nu+&rnu==0, &nu]
Umschalten zwischen ohne Zahlen → absolute → relativ absolut auf Cursor - Linie :
:let [&nu, &rnu] = [!&rnu, &nu+&rnu==1]
Für diejenigen, die eine besser lesbare Lösung wünschen, ist das Folgende, was ich in meinem .vimrc habe
" 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>
Das Coole daran ist, dass Sie ctrl+ ndrücken können, um zwischen dem relativen und dem absoluten Zahlenmodus zu wechseln!
Eine andere Alternative wie Eric Anderson oben:
"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>