If you have vim8 you might want to play with the new timers feature. The difference with @grodzik solution is that timers are asynchronous meaning that you can still use Vim will the cursor is moving.
The idea is to add the following to your
" Indexes of the lines to read
let lines = [1, 2, 3, 4, 5, 10]
" Time between to changes of lines in miliseconds
let delay = 5000
" Will be used to delay each line change
let repeat = 0
" Go to each lines
for line in lines
call timer_start(repeat * delay, function('GoToLineTimer', [line]))
let repeat += 1
First a function which contains the list of the lines to visit (you can modify that so it take the list as an argument). For each line contained in the list the function will create a timer with a delay. This timer will call the following function which only changes the line of the cursor:
function! GoToLineTimer(line, timer)
execute 'normal! ' .a:line . 'G'
You can then simply use
:call GoToLines() or create a mapping which will call the function for you.
If you want to stop the timers and keep your cursor on the current line you can use
:call timer_stopall() to stop all of the timers.
Of course this solution will only work with
vim8 and the