" Section: Line operations function! s:ExecMove(cmd) abort let old_fdm = &foldmethod if old_fdm !=# 'manual' let &foldmethod = 'manual' endif normal! m` silent! exe a:cmd norm! `` if old_fdm !=# 'manual' let &foldmethod = old_fdm endif endfunction function! s:Move(cmd, count, map) abort call s:ExecMove('move'.a:cmd.a:count) silent! call repeat#set("\unimpairedMove".a:map, a:count) endfunction function! s:MoveSelectionUp(count) abort call s:ExecMove("'<,'>move'<--".a:count) silent! call repeat#set("\unimpairedMoveSelectionUp", a:count) endfunction function! s:MoveSelectionDown(count) abort call s:ExecMove("'<,'>move'>+".a:count) silent! call repeat#set("\unimpairedMoveSelectionDown", a:count) endfunction nnoremap unimpairedMoveUp :call Move('--',v:count1,'Up') nnoremap unimpairedMoveDown :call Move('+',v:count1,'Down') xnoremap unimpairedMoveSelectionUp :call MoveSelectionUp(v:count1) xnoremap unimpairedMoveSelectionDown :call MoveSelectionDown(v:count1) nmap [e unimpairedMoveUp nmap ]e unimpairedMoveDown xmap [e unimpairedMoveSelectionUp xmap ]e unimpairedMoveSelectionDown