с
setl nu!
Я могу переключить номер (вкл / выкл), аналогично с относительным номером
setl rnu!
как я могу переключить {выкл, номер, относительный номер}?
с
setl nu!
Я могу переключить номер (вкл / выкл), аналогично с относительным номером
setl rnu!
как я могу переключить {выкл, номер, относительный номер}?
Ответы:
Потому что мне нравится логическая головоломка, и мне действительно нравится, когда команда vim помещается в одну строку для кратких повторов ( @:это личный фаворит):
:exec &nu==&rnu? "se nu!" : "se rnu!"
Это будет поддерживать тот же цикл. Я думаю, что это главным образом потому, let &nu=1
что неявно установит norelativenumber - по причинам, вероятно, найденным в документации :)
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>