编辑代码时我总是需要这个功能:在当前行之后创建一个新行,将光标移动到一个新行(保存固有的缩进!)并保持正常模式。例如(假设█是光标):
function a() {
foon█tion()
}
输入命令后,我需要这样:
function a() {
foonction()
█
}
如果我,例如在处于插入模式时按<Enter><Esc>
并且光标位于一行的末尾,我可以达到相同的效果。 o
命令的作用也相似,但在退出插入模式后删除了缩进。所以我需要一个按键才能插入一行。
inb4 nmap:我知道如何映射命令以执行此类操作,但我想知道是否有标准方法可以执行此操作。
答案 0 :(得分:26)
您也可以使用<C-o> o
combo
答案 1 :(得分:24)
没有这样的密钥,但事实证明我们可以做到这一点 - 没有缩进 - 只需四次击键::pu_<Enter>
这是一个vim faq问题,答案是使用Ex命令:put
:
12.15。如何在不进入插入模式的情况下在当前行的上方/下方插入空白行?
您可以使用“:put”ex命令插入空行。例如,尝试
:put =''
:put! =''
有关详细信息,请阅读:help:put
:put
将来自给定寄存器的文本放在当前行之后,并使您处于正常模式。 :put!
将文字放在当前行上方的一行上。
上面的示例使用expression
寄存器=
将空字符串发送到put
命令。我们可以使用vim的黑洞寄存器_
::put _
来减少这种情况。
最后,这可以缩写为::pu_<Enter>
和:pu!_<Enter>
。
另请参阅::help registers
。
最后,请注意,这也是Tim Pope的未受损插件的一个功能。
来自未受损害的自述文件:
有线性映射。
[<Space>
和]<Space>
在光标行之前和之后添加换行符。[e
和]e
将当前行与其上方或下方的行进行交换。