Таким образом, я читал :help scroll-cursor
и действительно как zz
, который помещает строку, Ваш курсор идет посреди Вашего окна.
Я ищу справку для создания отображения, которое работало бы подобный zz
но помещает строку, мой курсор идет на 20% высоты окна (или 25%, 30% и т.д.).
Править:
Благодаря ZyX и Drasill, я смог изменить его функцию для получения желаемой функциональности:
function ScrollToPercent(percent)
let movelines=winheight(0)*a:percent/100
if has("float") && type(movelines)==type(0.0)
let movelines=float2nr(movelines)
endif
let oldso=&so
execute ":set so=" . movelines
execute "normal! zt"
execute ":set so=" . oldso
endfunction
Извините, эта функция изменяет текущую строку, а вам нужно изменить положение окна текущей строки. Вот правильный:
функция ScrollToPercent (в процентах)
пусть curlnr = line ('.')
let targetlnr = line ('w0') + (winheight (0) * a: процент / 100)
пусть movelines = targetlnr-curlnr
если movelines <0
пусть движение = 'k'
пусть movelines = -movelines
elseif movelines> 0
пусть движение = 'j'
еще
возврат 0
endif
если есть ("float") && type (movelines) == type (0.0)
пусть movelines = float2nr (movelines)
endif
выполнить "нормально!" .movelines.motion
конечная функция
function! ScrollToPercent(percent) let movelines=winheight(0)*(50-a:percent)/100 echo movelines if movelines<0 let motion='k' let rmotion='j' let movelines=-movelines elseif movelines>0 let motion='j' let rmotion='k' else return 0 endif if has('float') && type(movelines)==type(0.0) let movelines=float2nr(movelines) endif execute 'normal! zz'.movelines.motion.'zz'.movelines.rmotion endfunction
Поместите эту функцию в свой .vimrc
и определите сопоставление, например:
nnoremap z%2 :<C-u>call ScrollToPercent(20)<CR>
Это не конкретный ответ на ваш вопрос, но вам может понравиться опция scrolloff
.
Например: : set scrolloff = 5
всегда будет оставлять 5 видимых строк в начале и в конце вашего окна.
Итак, когда вы используете zt
или zb
, ваш курсор переместится на 5 строк под верхом (или на 5 строк над низом, соответственно), что может быть почти желаемым 20%. .
Мне лично нравится этот сеттинг.
:help scrolloff
Я так понимаю, вы знаете о zb
и zt
, которые прокручивают текущую строку вниз или вверх, соответственно?