50

我想在不离开正常模式(进入插入或命令行模式)的情况下将一行(在光标位置)分成两行。这可能吗?

我目前到达我想要的位置并点击'i'进入插入模式,'enter'将行分成两部分,然后'esc'返回正常模式。

我不想设置最大行长或做任何语法或类似的事情。我只想在不离开正常模式的情况下将一行分成两行。'J' 将光标所在的行连接到它下面的行,这很方便。我想要相反的——用一个命令把一行分成两行。

4

8 回答 8

45

试试这个:

:nnoremap <NL> i<CR><ESC>

然后只要你想分割一行就按Ctrl-J。

于 2010-10-18T17:41:00.100 回答
43

我不知道单个键命令,但很多时候我先按“r”然后按“Enter”来换行。

"r" 替换光标下的当前字符而不进入插入模式。如果您不想替换字符,这可能不是您想要的...

于 2010-10-18T17:40:37.260 回答
29

将光标放在适当的位置并...

  r<Enter>
于 2010-11-16T23:13:17.227 回答
27

与其他答案类似,但不替换当前字符。

R<enter>

无需重新映射。

于 2014-05-28T16:21:52.830 回答
3

据我所知,如果不进入插入模式,这是不可能的。但是,您可以使用类似的宏(将 Z 替换为您要使用的任何键)

nmap Z i<cr><esc>k$

基本上这映射键'Z'进入插入模式'i',插入回车' <cr>',离开插入模式' <esc>',上一行'k',最后到行尾'$'

于 2010-10-18T17:41:31.953 回答
2

根据这个重复的问题:如何在不进入 Vim 插入模式的情况下在光标所在的位置插入换行符?

在 vim 中,输入:

:map g i[Ctrl+V][Enter][Ctrl+V][Esc][Enter]

这会将 G 键映射到宏 I [Enter] [Escape]

于 2010-10-18T17:41:40.487 回答
2

您可以使用录音。

  1. 将光标放在要插入换行符的位置。
  2. 键入qa以开始录制到寄存器a中(如果需要,您可以使用其他寄存器a。)
  3. 然后输入i(切换到插入模式),Return(插入换行符),escape(退出插入模式),q(结束录制。)

现在您可以通过键入@aa开始录制时使用的寄存器号在哪里)来调用此键序列,只需将光标移动到要插入换行符的位置并键入@a

于 2015-02-09T19:38:53.153 回答
1

在正常模式下,按字符“O”,然后按“Esc”。不需要映射。

于 2020-07-02T21:17:21.837 回答