我想将一行(在光标位置)分成两行而不离开正常模式(进入插入或命令行模式)。这可能吗?
我目前到达我想要的位置并点击'i'进入插入模式,'enter'将线条分成两行,然后'esc'返回正常模式。
我不是要设置最大行长度或做任何语法或类似的东西。我只是想在不离开正常模式的情况下将一行分成两行。 'J'将光标所在的行连接到它下面的行,这很方便。我想要相反 - 用一个命令将一行分成两行。
答案 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”。无需映射。