我经常发现自己在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个空白将是很好的。
有关如何解决这个问题的建议允许范围并在完成时仍然返回原始光标位置?
答案 0 :(得分:12)
您可以使用:call append(linenumber, repeat([''], 5))
。它不会移动光标。
答案 1 :(得分:9)
unimpaired插件会添加符合您需要的映射。您可以使用[<space>
insert a blank line above the cursor,或]<space>
下的光标下方{{3}}。这两个映射都可以加上计数。
答案 2 :(得分:1)
我将此添加到我的.vimrc
"create new line below current line without leaving normal mode or moving cursor
noremap - m`o<Esc>``
"create new line above current line without leaving normal mode or moving cursor
noremap _ m`O<Esc>``
我更喜欢这个解决方案有几个原因:
警告: 标记`键会影响跳转列表。如果能让你高兴的话,你可以使用任何其他标记++