Maybe addin something like that to your `.vimrc` could be what you want: function! DeleteOver() let save_cursor = getpos(".") normal k normal dd call setpos('.', save_cursor) normal k endfunction nnoremap <Leader>d :call DeleteOver()<CR> function! DeleteUnder() let save_cursor = getpos(".") normal j normal dd call setpos('.', save_cursor) normal j endfunction nnoremap <Leader>D :call DeleteUnder()<CR> The functions delete the line under or over the current one and go back to the right position on the line and the mappings calls the functions.