I often find myself bouncing on o or O and ctrl{ to insert blank lines and get back out of insert mode.
Thinking there must be a simpler way, and hoping to retain my cursor position, I hacked together these sloppy macros:
map <Leader>O :let cursorpos = getpos(".")<CR>:i<CR><CR>.<CR>:let cursorpos[1] = cursorpos[1] + 1<CR>:call setpos('.', cursorpos)<CR>
map <Leader>o :let cursorpos = getpos(".")<CR>:a<CR><CR>.<CR>:call setpos('.', cursorpos)<CR>
However, this doesn't allow for ranges. It would be nice to be able to go 5\O and get 5 blanks above my current line.
Any suggestions on how I can fix this to allow ranges and still return to the original cursor position when done?