Loading ...
Sorry, an error occurred while loading the content.

Smooth Scrolling in Vim

Expand Messages
  • Rich
    I have been working on a script to allow smooth scrolling in Vim. I got it working pretty well, even with a variable pause in between steps (currently set to
    Message 1 of 1 , Dec 30, 2011
    • 0 Attachment
      I have been working on a script to allow smooth scrolling in Vim. I
      got it working pretty well, even with a variable pause in between
      steps (currently set to speed up for the first 80% of iterations, and
      then slow down at the end). I am happy with the result for the most
      part, but have an issue with the speed of the scroll especially when
      the window is maximized on slow machines. Right now, I am only
      setting a delay between steps of 5ms, but it still is taking a bit of
      time with 0. I was wondering if there were any ideas of anything I
      can be doing differently to get it sped up.

      " Smooth Scrolling
      nnoremap <c-d> :call DelayedFunc("normal! gjzz",winheight(".")/
      2-1,5)<cr>
      nnoremap <c-u> :call DelayedFunc("normal! gkzz",winheight(".")/
      2-1,5)<cr>

      func! DelayedFunc(cmd,...)
      " cmd , iter , delay
      let iter=10
      let delay=20
      if a:0 == 2
      let iter = a:1
      let delay = a:2
      endif
      let i = 0
      " first section
      let ot = iter/5*4
      let start = range(100,0,eval(-100/(ot-1)))
      " second section
      let tt = iter - ot
      let end = range(0,100,eval(100/(tt-1)))
      " list of speeds
      let speed = start + end
      if a:cmd != ""
      while i < iter
      execute a:cmd
      try
      exec "sleep " . eval(delay*speed[i]/100) . "m"
      catch *
      endtry
      let i = i + 1
      redraw
      endwhile
      endif
      endfunc

      --
      You received this message from the "vim_use" maillist.
      Do not top-post! Type your reply below the text you are replying to.
      For more information, visit http://www.vim.org/maillist.php
    Your message has been successfully submitted and would be delivered to recipients shortly.