19

在编辑代码时,我总是需要这个功能:在当前行之后创建一个新行,将光标移动到一个新行(保存当前缩进!)并保持正常模式。例如(假设 █ 是一个游标):

function a() {
    foon█tion()
}

输入命令后,我需要变成这样:

function a() {
    foonction()
    █
}

例如,如果我<Enter><Esc>在插入模式下将光标放在行尾时按下,我可以达到相同的效果。该o命令的作用也类似,但在我退出插入模式后它会删除缩进。所以我需要一个按键来插入一行。

inb4 nmap:我知道如何映射一个命令来做这样的事情,但我想知道是否有标准的方法来做到这一点。

4

2 回答 2

26

你也可以使用<C-o> o组合

于 2012-08-08T20:09:53.617 回答
24

没有这样的键,但事实证明我们可以做到这一点 - 无缩进 - 只需四次击键::pu_<Enter>

这是一个vim 常见问题,答案是使用 Ex 命令:put

12.15。如何在不进入插入模式的情况下在当前行上方/下方插入空行?

你可以使用 ":put" ex 命令插入空行。例如,尝试

:put =''
:put! =''

有关更多信息,请阅读 :help :put

:put将给定寄存器中的文本放在当前行之后,并使您处于正常模式。:put!将文本放在当前行上方的一行。

上面的例子是使用expression寄存器=put命令发送一个空字符串。我们可以通过使用 vim 的黑洞寄存器来减少它,_: :put _

最后,这可以缩写为::pu_<Enter>:pu!_<Enter>

另见::help registers

最后,请注意,这也是 Tim Pope 的unimpaired插件的一个功能。

从未受损的自述文件中:

有线性映射。[<Space>]<Space>在光标行前后添加换行符。[e并将]e当前行与其上方或下方的行交换。

于 2012-07-22T21:21:16.857 回答