在Vim中的当前行的上方或下方插入空白行

时间:2014-05-18 19:16:19

标签: vim insert mapping lines blank-line

我最近惊讶自己想要在正常模式或插入模式下在当前行的上方或下方插入空白行。

我通常会在代码中添加空行以便更好地阅读或正确分隔代码块。

要做到这一点,我在.vimrc中使用以下内容:

" Add empty line above and below the current line
nnoremap <silent> <C-K> mP:pu! _<cr>:']+1<cr>`P
inoremap <silent> <C-K> <esc>mP:pu! _<cr>:']+1<cr>`Pa
nnoremap <silent> <C-J> mP:pu _<cr>:'[-1<cr>`Pa
nnoremap <silent> <C-J> <esc>mP:pu _<cr>:'[-1<cr>`Pa      

这些映射唯一令人遗憾的事情是我只是使用标记P返回上一个光标位置。我尝试使用``而不是它没有达到我的预期。

也许有一个稍好的解决方案,否则这个片段对我来说效果很好。

我正在我的.vimrc中慢慢添加新的映射。我注意到<C-[a-z]>组合大多是免费的,现有的组合非常无用(即<C-Q><C-H><C-M> ...)。然后我决定将它们绑定到新的有用映射:

<C-N> New file
<C-S> Save (:update!)
<C-P> CtrlP mixed mode
<C-S-P> CtrlPCmdPalette
<C-B> CtrlP buffers mode
<C-D> <C-C>ciw
…

2 个答案:

答案 0 :(得分:1)

而不是使用命名标记,您可以使用反引号'显式添加跳转。像:

nnoremap <c-k> m`O<esc>``
nnoremap <c-j> m`o<esc>``
inoremap <c-j> <esc>m`o<esc>``a
inoremap <c-k> <esc>m`O<esc>``a

答案 1 :(得分:1)

如果您想要一个同时处理[count]的强大映射,我的LineJuggler plugin包含]<Space>映射(以及其他)。此特定映射也可以在unimpaired plugin

中找到