在插入模式下创建新行

24
我希望使用类似 Shift + Enter 的方式在 Vim 中创建新行。
所以如果 | 是光标,我想要做的是:
<%= some.code("in here") | %>

现在,按下 Shift + Enter(或类似的组合键), 并获得以下输出:

<%= some.code("in here") %>
and my new line here |

这是否可能?


你是否也希望它缩进到光标 | 所在的位置,还是只是打开一个新行并保持当前自动缩进级别? - Michael Berkowski
1
尝试使用imap <leader>n <ESC>o - newkedison
嘿 @MichaelBerkowski,只需要自动缩进就可以了。 - DavidVII
4个回答

32

切换到正常模式

可能有多种方法可以做你想要的事情,但其中一种选项是使用CTRL-O切换到正常模式以插入该行。例如:CTRL-O o会在当前行下方打开一个新行,并将光标置于插入模式。

如果你想将其映射而不是仅作为一次性使用,可以使用imap来设置您所选择的助记符。例如:

:imap \nn <C-O>o

将为\nn创建插入模式映射,执行相同的操作。


有没有任何方式将它映射到Shift+Enter? - DavidVII
据我所知,没有。请参阅 https://dev59.com/fGQo5IYBdhLWcg3wDbwJ 以获取有关该问题的答案。 - Todd A. Jacobs

27

<ESC> o - 在下方打开一行。

<ESc> Shift + o - 在上方打开一行。


12

我使用 imap <C-o> <esc>o 来绑定 Ctrl+O 命令为新建一行。


10
这种情况下,您会在插入模式中覆盖默认的<C-o>按键,该按键会进入正常模式执行一个命令并切换回插入模式。是这样吗? - Alex Shwarc

0
正如@alex-shwarc所指出的那样,<C-o> o(CTRL-o)可以在本地获得您想要的行为(相反,<C-o> O可以在上方创建一个新行并插入内容)。<C-o>非常有用,请参阅:help i_CTRL-O

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接