On Thu, Mar 11, 2010 at 7:11 AM, Andy Wokula <anw...@yahoo.de> wrote: > Am 27.02.2010 05:39, schrieb Matt Wozniski: >> >> On Fri, Feb 26, 2010 at 5:23 PM, Jean Johner<jean.joh...@cea.fr> wrote: >>> >>> On Feb 26, 6:58 pm, Ben Fritz<fritzophre...@gmail.com> wrote: >>> >>>> 2. Re-map CTRL-F/CTRL-B with an :nnoremap command that issues the >>>> command, then scrolls by 1 line with CTRL-Y/CTRL-E in the correct >>>> direction to get the desired amount of context. >>> >>> Hi Ben, >>> CTRL-F CTRL-E does the job but the transition is visible on a slow >>> connection (VPN). >>> For CTRL-D, it is more complicated since it depends on the vertical >>> dimension of the screen. >>> >>> It is nevertheless surprising that, in a code where everything can be >>> configured, this two lines overlap between screens seems to be set in >>> stone. >> >> Perhaps make the map call a function that ensures 'lazyredraw' is set >> while scrolling. This seems to do the trick, afaics, and has no >> noticeable delay over the slowest connection I can get. >> >> ~Matt >> >> function! s:ScrollLeavingOneLineOffset(dir, insert) >> let savelz =&lz >> set lazyredraw >> >> try >> if a:dir> 0&& a:insert >> return "\<PageDown>\<C-o>\<C-e>" >> elseif a:dir> 0 >> return "\<PageDown>\<C-e>" >> elseif a:insert >> return "\<PageUp>\<C-o>\<C-y>" >> else >> return "\<PageUp>\<C-y>" >> endif >> finally >> let&lz = savelz >> endtry >> endfunction >> >> noremap<expr> <C-b> <SID>ScrollLeavingOneLineOffset(-1, 0) >> noremap<expr> <PageUp> <SID>ScrollLeavingOneLineOffset(-1, 0) >> noremap<expr> <C-f> <SID>ScrollLeavingOneLineOffset( 1, 0) >> noremap<expr> <PageDown> <SID>ScrollLeavingOneLineOffset( 1, 0) >> >> inoremap<expr> <C-b> <SID>ScrollLeavingOneLineOffset(-1, 1) >> inoremap<expr> <PageUp> <SID>ScrollLeavingOneLineOffset(-1, 1) >> inoremap<expr> <C-f> <SID>ScrollLeavingOneLineOffset( 1, 1) >> inoremap<expr> <PageDown> <SID>ScrollLeavingOneLineOffset( 1, 1) > > Can this work? > The actual scroll commands are executed after lazyredraw has been > restored.
Aha, that must have been why it didn't work for the OP but worked for me - I have lazyredraw set all the time, and didn't notice the bug. Well, that's one mystery solved. :-) ~Matt -- 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