screenmovement.vim 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  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. " Make movements operate on 1 screen line in wrap mode
  18. nnoremap <silent> <expr> j ScreenMovement("j")
  19. nnoremap <silent> <expr> k ScreenMovement("k")
  20. nnoremap <silent> <expr> 0 ScreenMovement("0")
  21. nnoremap <silent> <expr> ^ ScreenMovement("^")
  22. nnoremap <silent> <expr> $ ScreenMovement("$")
  23. onoremap <silent> <expr> j ScreenMovement("j")
  24. onoremap <silent> <expr> k ScreenMovement("k")
  25. onoremap <silent> <expr> 0 ScreenMovement("0")
  26. onoremap <silent> <expr> ^ ScreenMovement("^")
  27. onoremap <silent> <expr> $ ScreenMovement("$")
  28. xnoremap <silent> <expr> j ScreenMovement("j")
  29. xnoremap <silent> <expr> k ScreenMovement("k")
  30. xnoremap <silent> <expr> 0 ScreenMovement("0")
  31. xnoremap <silent> <expr> ^ ScreenMovement("^")
  32. xnoremap <silent> <expr> $ ScreenMovement("$")
  33. function! ScreenMovement(movement)
  34. if &wrap
  35. return 'g' . a:movement
  36. else
  37. return a:movement
  38. endif
  39. endfunction