ав. с какой стати этот вопрос был перенесен в SU? Это вопрос программирования, связанный с инструментом программирования . Это не получает больше, чем это. Программисты, которые сосредоточены на SO (как я), теперь не смогут найти этот ответ, потому что 5 человек не знают, что такое vim. Пойди разберись. МЕТА: meta.stackexchange.com/questions/25925/vim-questions-so-or-su
sehe
@sehe, я согласен, это вопрос для StackOverflow
juanpablo
Ответы:
9
if &nu == 1
set rnu
elseif &rnu == 1
set nornu
else
set nu
endif
спасибо Бенуа, я добавил ваше решение в качестве сущности
juanpablo
1
@JuanPablo: ммм. Мне больше нравится моя версия :)
Сехе
1
@sehe: я бы сказал то же самое о моей версии. :-)
17
Потому что мне нравится логическая головоломка, и мне действительно нравится, когда команда vim помещается в одну строку для кратких повторов ( @:это личный фаворит):
:exec &nu==&rnu? "se nu!" : "se rnu!"
Это будет поддерживать тот же цикл. Я думаю, что это главным образом потому, let &nu=1что неявно установит norelativenumber - по причинам, вероятно, найденным в документации :)
+1, поскольку я могу поместить его в мой файл .vimrc как одну строку nmap <F3> :exec &nu==&rnu? "se nu!" : "se rnu!"<CR>для переключения между тремя вариантами с помощью F3.
3
Вы могли бы сделать это nnoremap <silent> <F3>... чтобы уменьшить визуальное отвлечение и вмешиваться в другие отображения.
sehe
Я пришел с почти такой же (но более короткими :-) линией , когда прочитал вопрос: exe'se'&nu+&rnu?'rnu!':'nu'.
Кстати, чтобы обеспечить себе связь между numberи relativenumberопциями, см :helpg When setting this option.
@ib: спасибо, что поделились. Мне очень нравятся ваши игры в Vim Code - там есть драгоценные камни, которые действительно ускоряют мою повседневную работу; В этом случае, однако, я специально выбрал свою версию (чистая на 3 символа длиннее - кроме пробела), потому что она разборчива. На мой взгляд, нет никакой выгоды от его дальнейшего сжатия: его становится все труднее печатать и намного труднее запомнить, даже если вам когда-либо приходилось печатать его из памяти. Это будет в картировании. Таким образом, версия Бенуа
хороша
8
Начиная с Vim 7.3.1115 это стало немного сложнее сделать.
Причина в том, что помимо «без номеров строк» и «абсолютных номеров строк», теперь есть две настройки для относительных номеров строк: обычные «относительные номера строк» и «относительные номера строк с абсолютным номером на линии курсора».
С технической точки зрения, все четыре комбинации возможны 'number'и 'relativenumber'сейчас.
Вот как это сделать:
Переключите все четыре параметра, без цифр → абсолютное → относительное → относительное с абсолютным на линии курсора :
:exe 'set nu!' &nu ? 'rnu!' : ''
Переключение между номерами → абсолютное → относительное :
:let [&nu, &rnu] = [&nu+&rnu==0, &nu]
Переключение между номерами → абсолютное → относительное с абсолютным на линии курсора :
Для тех, кто хотел бы получить более удобочитаемое решение, вот что я имею в своем .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>
Ответы:
источник
Потому что мне нравится логическая головоломка, и мне действительно нравится, когда команда vim помещается в одну строку для кратких повторов ( @:это личный фаворит):
Это будет поддерживать тот же цикл. Я думаю, что это главным образом потому,
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'
сейчас.Вот как это сделать:
Переключите все четыре параметра, без цифр → абсолютное → относительное → относительное с абсолютным на линии курсора :
Переключение между номерами → абсолютное → относительное :
Переключение между номерами → абсолютное → относительное с абсолютным на линии курсора :
источник
Для тех, кто хотел бы получить более удобочитаемое решение, вот что я имею в своем .vimrc
Крутая вещь в этом заключается в том, что вы можете нажать ctrl+, nчтобы переключаться между режимами относительного и абсолютного чисел!
источник
Другая альтернатива, как Эрик Андерсон выше:
источник
источник