screenmovement.vim 955 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. " Freedom of movement in visual block mode
  2. set virtualedit=block
  3. " Smart way to move between windows
  4. " Enchancing these mapping with vertical maximisation (<C-w>_) is interesting
  5. noremap <C-j> <C-w>j
  6. noremap <C-k> <C-w>k
  7. noremap <C-h> <C-w>h
  8. noremap <C-l> <C-w>l
  9. " Adjust viewports to the same size
  10. map <Leader>= <C-w>=
  11. " Easier horizontal scrolling
  12. map zl zL
  13. map zh zH
  14. " Easier jumping to beginning and end of line
  15. map H ^
  16. map L $
  17. " Move according to the screen when wrapped
  18. function! ScreenMove(move)
  19. if &wrap
  20. return 'g' . a:move
  21. else
  22. return a:move
  23. endif
  24. endfunction
  25. " Map screen moves in normal, operator-pending and visual (but not select) modes
  26. function! MapScreenMove(move)
  27. for mapmode in ['n', 'o', 'x']
  28. execute mapmode."noremap <silent> <expr>" a:move 'ScreenMove("'.a:move.'")'
  29. endfor
  30. endfunction
  31. call MapScreenMove("j")
  32. call MapScreenMove("k")
  33. call MapScreenMove("0")
  34. call MapScreenMove("^")
  35. call MapScreenMove("$")