|
|
@@ -19,27 +19,24 @@ map zh zH
|
|
|
map H ^
|
|
|
map L $
|
|
|
|
|
|
-" Make movements operate on 1 screen line in wrap mode
|
|
|
-nnoremap <silent> <expr> j ScreenMovement("j")
|
|
|
-nnoremap <silent> <expr> k ScreenMovement("k")
|
|
|
-nnoremap <silent> <expr> 0 ScreenMovement("0")
|
|
|
-nnoremap <silent> <expr> ^ ScreenMovement("^")
|
|
|
-nnoremap <silent> <expr> $ ScreenMovement("$")
|
|
|
-onoremap <silent> <expr> j ScreenMovement("j")
|
|
|
-onoremap <silent> <expr> k ScreenMovement("k")
|
|
|
-onoremap <silent> <expr> 0 ScreenMovement("0")
|
|
|
-onoremap <silent> <expr> ^ ScreenMovement("^")
|
|
|
-onoremap <silent> <expr> $ ScreenMovement("$")
|
|
|
-xnoremap <silent> <expr> j ScreenMovement("j")
|
|
|
-xnoremap <silent> <expr> k ScreenMovement("k")
|
|
|
-xnoremap <silent> <expr> 0 ScreenMovement("0")
|
|
|
-xnoremap <silent> <expr> ^ ScreenMovement("^")
|
|
|
-xnoremap <silent> <expr> $ ScreenMovement("$")
|
|
|
-
|
|
|
-function! ScreenMovement(movement)
|
|
|
+" Move according to the screen when wrapped
|
|
|
+function! ScreenMove(move)
|
|
|
if &wrap
|
|
|
- return 'g' . a:movement
|
|
|
+ return 'g' . a:move
|
|
|
else
|
|
|
- return a:movement
|
|
|
+ return a:move
|
|
|
endif
|
|
|
endfunction
|
|
|
+
|
|
|
+" Map screen moves in normal, operator-pending and visual (but not select) modes
|
|
|
+function! MapScreenMove(move)
|
|
|
+ for mapmode in ['n', 'o', 'x']
|
|
|
+ execute mapmode."noremap <silent> <expr>" a:move 'ScreenMove("'.a:move.'")'
|
|
|
+ endfor
|
|
|
+endfunction
|
|
|
+
|
|
|
+call MapScreenMove("j")
|
|
|
+call MapScreenMove("k")
|
|
|
+call MapScreenMove("0")
|
|
|
+call MapScreenMove("^")
|
|
|
+call MapScreenMove("$")
|