我经常在插入模式下敲击o或O和ctrl{来插入空白行并退出插入模式。
想着一定有更简单的方法,并希望保留我的光标位置,我编写了以下这些不太优雅的宏:
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>
然而,这种方法并不支持范围。希望能够输入5\O并在当前行上方输出5个空白行。
有没有什么建议可以解决这个问题,使其支持范围,并在完成后返回到原始光标位置?
mapO :call append(line(".") -1, repeat([''], v:count1))
map o :call append(line("."), repeat([''], v:count1))
以响应范围。谢谢! - Jamey Pearce:call
替换为:<c-u>call
,并将 5 替换为v:count1
。或者保留 5 并以<C-\><C-N>
或<esc>
开始命令以清除计数。 - Luc Hermitte