I think the best way to do what you want is to use ctrle to scroll up and ctrly to scroll down as the doc says:
However if you really want to use the arrow keys and have a scroll lock mechanism you could implement it yourself by adding this to your vimrc:
" This variable will hold the state of the scroll lock " 0: disabled 1: endabled let g:scrollLock = 0 " This command toggles the state of the scroll lock command! ToggleScrollLock let g:scrollLock = !g:scrollLock " If you want to avoid typing the previous command each time you can use a mapping like this one (Replace <F1> by your preferred key) nnoremap <silent> <F1> :ToggleScrollLock<CR> " And these are conditional mappings depending on the value of g:scrollLock the arrow keys will behave differently nnoremap <expr> <Up> (g:scrollLock == 1) ? '<C-y>' : '<up>' nnoremap <expr> <Down> (g:scrollLock == 1) ? '<C-e>' : '<down>'
See :h :map-<expr> for more details about the last mappings.
Also I would encourage you to read :h scrolling there is a lot of different ways to scroll through a buffer in Vim, knowing all of your options might help you understanding why Vim doesn't have a traditional scroll lock mechanism.
ctrl+eandctrl+y:h CTRL-E:h CTRL-Yso I'd say no need for a scroll lock button.