如何在正常模式下打破vim中的一行?

时间:2010-10-18 17:35:57

标签: vim macvim

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

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

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

8 个答案:

答案 0 :(得分:36)

试试这个:

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

然后只要按下Ctrl-J就可以分割一条线。

答案 1 :(得分:27)

我不知道一个关键命令,但很多时候我做“r”然后“回车”打破一条线。

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

答案 2 :(得分:18)

将光标置于位置......

  r<Enter>

答案 3 :(得分:13)

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

R<enter>

无需重新映射。

答案 4 :(得分:2)

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

nmap Z i<cr><esc>k$

基本上这会将键'Z'映射到插入模式'i',插入一个回车'<cr>',离开插入模式'<esc>',上一行'k'并且最后走到'$'

行的末尾

答案 5 :(得分:2)

根据这个重复的问题:How do I insert a linebreak where the cursor is without entering into insert mode in Vim?

从vim中输入:

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

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

答案 6 :(得分:0)

您可以使用录音。将光标放在要插入换行符的位置。输入qa开始录制到注册a(如果需要,可以使用a以外的其他注册。然后键入i(切换到插入模式),返回(插入换行符),转义(退出插入模式),q(结束录制。)现在,您可以通过键入@a来调用此序列键(其中a是您在开始录制时使用的注册号,因此只需将光标移动到要插入换行符的位置并键入@a

答案 7 :(得分:0)

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