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