z
setl nu!
Mogę przełączać numer (on / off), podobnie z relatywnym numerem
setl rnu!
jak mogę przełączyć {off, number, relativenumber}?
z
setl nu!
Mogę przełączać numer (on / off), podobnie z relatywnym numerem
setl rnu!
jak mogę przełączyć {off, number, relativenumber}?
Odpowiedzi:
Ponieważ uwielbiam łamigłówkę logiczną i naprawdę ją uwielbiam, gdy polecenie vim pasuje do pojedynczego wiersza dla zwięzłych powtórzeń ( @:jest osobistym ulubionym):
:exec &nu==&rnu? "se nu!" : "se rnu!"
To utrzyma ten sam cykl. Myślę, że let &nu=1
dzieje się tak głównie dlatego, że domyślnie ustawimy norelativenumber - z powodów prawdopodobnie znalezionych w dokumentacji :)
nmap <F3> :exec &nu==&rnu? "se nu!" : "se rnu!"<CR>
przełączania trzech opcji za pomocą F3.
nnoremap <silent> <F3>
... aby zmniejszyć rozproszenie wzroku i zakłócanie innych mapowań.
exe'se'&nu+&rnu?'rnu!':'nu'
.
number
i relativenumber
opcjami, zobacz :helpg When setting this option
.
Od wersji Vima 7.3.1115 stało się to trochę bardziej skomplikowane.
Powodem jest to, że oprócz „bez numerów linii” i „bezwzględnych numerów linii” istnieją teraz dwa ustawienia względnych numerów linii: zwykłe „względne numery linii” i „względne numery linii z liczbą bezwzględną na linii kursora”.
Mówiąc bardziej technicznie, wszystkie cztery kombinacje 'number'
i 'relativenumber'
są teraz możliwe.
Oto jak przełączyć:
Przełącz wszystkie cztery ustawienia, bez liczb → absolutne → względne → względne z absolutnym na linii kursora :
:exe 'set nu!' &nu ? 'rnu!' : ''
Przełącz między brakiem → absolutem → względnym :
:let [&nu, &rnu] = [&nu+&rnu==0, &nu]
Przełącz między brakiem → absolutem → względnym z absolutem na linii kursora :
:let [&nu, &rnu] = [!&rnu, &nu+&rnu==1]
Dla tych, którzy chcieliby bardziej czytelnego rozwiązania, oto, co mam w moim .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>
Fajną rzeczą jest to, że możesz nacisnąć ctrl+, naby przełączać się między trybami liczb względnych i bezwzględnych!
Kolejna alternatywa, taka jak Eric Anderson powyżej:
"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>