Vim命令在正常模式下插入空行

时间:2011-07-20 16:25:09

标签: vim insert

Vim中是否有任何与oO相同的命令(在当前之前/之后插入一个空行),但是它也不会切换到插入模式?

4 个答案:

答案 0 :(得分:16)

:nnoremap <silent> [<space> :pu! _<cr>:']+1<cr>
:nnoremap <silent> ]<space> :pu _<cr>:'[-1<cr>

说明:

  • :put将在下方按行粘贴注册。 (:pu!以上)
  • :pu _将粘贴黑洞寄存器,该寄存器为空,因此我们得到一个空行
  • '[']标记设置在更改或抽出的文本的开头和结尾。
  • :'[会将光标移动到最后一次更改的起始行(在这种情况下为put)
  • :'[-1会移动'[但会再移动一行

如果您更喜欢插件,那么我建议Tim Pope unimpaired.vim。哪些提供这些映射,但也会计算。该插件还有许多其他不错的映射。

答案 1 :(得分:0)

在插入模式下:

:normal O

来自vim内联手册:

  

执行正常模式命令{命令}。这使得它成为可能   执行在命令行上键入的正常模式命令。 {命令}   像打字一样执行。撤消所有命令都撤消   一起。遇到错误时执行停止。如果   给出[!],不会使用映射。 {commands}应该是一个   完整的命令。如果{commands}没有完成命令,那么   最后一个将被中止,就像输入一样。

http://vimdoc.sourceforge.net/htmldoc/various.html#:normal

我在那里得到了提示: https://unix.stackexchange.com/a/16452/7914

答案 2 :(得分:0)

你可以尝试这样的事情:

:map <c-j> o<esc>

这是:当你按下 control + j 时,它会在下方添加一行(并进入插入模式)然后切换回正常模式,如果你想留在同一行你在哪里在最后添加k之前,如下所示:

:map <c-j> o<esc>k

我还添加了 control + k ,以便在我站在

之前添加一行。
:map <c-k> O<esc>

就像你之前添加j一样,以保持同一条线:

:map <c-k> O<esc>j

如果您需要或想要更高级的东西,可以查看以下帖子: Quickly adding and deleting empty linesInsert newline without entering insert mode

答案 3 :(得分:-1)

dd在一个空行上,p为了恢复它,然后p在你想要空白行的地方