From: Simon Ruderich Date: Fri, 2 Mar 2012 13:29:02 +0000 (+0100) Subject: vimrc: 'nostartofline' for window scroll commands only. X-Git-Url: https://ruderich.org/simon/gitweb/?p=config%2Fdotfiles.git;a=commitdiff_plain;h=4d1cd4888b2af7f8d4c73dc7a918aff4351cc6df vimrc: 'nostartofline' for window scroll commands only. --- diff --git a/vimrc b/vimrc index 8772434..7a51eba 100644 --- a/vimrc +++ b/vimrc @@ -284,6 +284,33 @@ cmap cnoremap cnoremap +if has('eval') +" Don't move the cursor to the first column for certain scroll commands (, , ). Thanks to jamessan in #vim on Freenode (2011-08-31 +" 02:27 CEST) for the 'nostartofline' tip. But I can't use 'nostartofline' +" directly because it also enables that feature for other commands which I +" don't want. + + " Set 'nostartofline' for a single movement. + function! s:TemporaryNostartofline(movement) + let l:startofline = &startofline + set nostartofline + execute 'normal! ' . a:movement + let &startofline = l:startofline + endfunction + + " Thanks to fow in #vim on Freenode (2012-02-16 15:38 CET) for the idea to + " use ""; Vim documentation reference: :help <>. + nnoremap + \ :call TemporaryNostartofline("C-F>") + nnoremap + \ :call TemporaryNostartofline("C-B>") + nnoremap + \ :call TemporaryNostartofline("C-D>") + nnoremap + \ :call TemporaryNostartofline("C-U>") +endif + " Write before suspending, thanks to deryni in #vim on Freenode (2011-05-09 " 20:02 CEST). To suspend without saving either unmap this or use :stop. nnoremap :update:stop @@ -292,9 +319,10 @@ nnoremap :update:stop " in #vim on Freenode (2011-08-15 00:17 CEST). nnoremap 2 -" Use to move down a page and - to move up one like in mutt. -nnoremap -nnoremap - +" Use to move down a page and - to move up one like in mutt. Don't use +" nnoremap so the / 'nostartofline' fix (see above) works. +nmap +nmap - " Go to next and previous buffer. Thanks to elik in #vim on Freenode " (2010-05-16 18:38 CEST) for this idea.