з
setl nu!
Я можу переключити номер (увімкнути / вимкнути), подібний відносно кількості
setl rnu!
як я можу переключити {off, number, Relax number}?
з
setl nu!
Я можу переключити номер (увімкнути / вимкнути), подібний відносно кількості
setl rnu!
як я можу переключити {off, number, Relax number}?
Відповіді:
Тому що я люблю логічну головоломку, і дуже люблю, коли команда vim вміщує один рядок для стислих повторів ( @:є особистим фаворитом):
:exec &nu==&rnu? "se nu!" : "se rnu!"
Це підтримуватиме той самий цикл. Я думаю, що це головним чином тому, що let &nu=1
буде неявно встановлено не відносне число - з причин, ймовірно, знайдених у документації :)
nmap <F3> :exec &nu==&rnu? "se nu!" : "se rnu!"<CR>
щоб перейти через три варіанти за допомогою F3.
nnoremap <silent> <F3>
... щоб зменшити зорову відволікання та заважати іншим відображенням.
exe'se'&nu+&rnu?'rnu!':'nu'
.
number
і relativenumber
варіантами, див :helpg When setting this option
.
Станом на Vim 7.3.1115 це зробити дещо складніше.
Причина полягає в тому, що окрім "без номерів рядків" та "абсолютних чисел рядків", тепер існують два параметри відносних номерів рядків: звичайні "відносні номери рядків" та "відносні номери рядків з абсолютним числом у рядку курсору".
Більш технічно кажучи, всі чотири комбінації 'number'
і 'relativenumber'
зараз можливі.
Ось як переключити:
Увімкніть усі чотири налаштування, без чисел → абсолютного → відносного → відносного з абсолютним у рядку курсору :
:exe 'set nu!' &nu ? 'rnu!' : ''
Переміщення між відсутністю чисел → абсолютним → відносним :
:let [&nu, &rnu] = [&nu+&rnu==0, &nu]
Переміщення між відсутністю чисел → абсолютним → відносним з абсолютним у рядку курсору :
:let [&nu, &rnu] = [!&rnu, &nu+&rnu==1]
Для тих, хто хотів би зрозумілішого рішення, наступне - що я маю в своєму .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>
Класна річ у цьому, що ви можете натиснути ctrl+, nщоб переключитися між режимами відносного та абсолютного чисел!
Ще одна альтернатива, як Ерік Андерсон вище:
"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>