代码之家  ›  专栏  ›  技术社区  ›  Ted

在正常模式下如何在VIM中断开一条线?

  •  32
  • Ted  · 技术社区  · 15 年前

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

    我现在到达我想要的位置,按“i”进入插入模式,“enter”将行分成两行,然后按“esc”返回正常模式。

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

    7 回复  |  直到 11 年前
        1
  •  36
  •   Amardeep AC9MF    15 年前

    试试这个:

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

    然后只要你想拆分一行就按ctrl-j。

        2
  •  27
  •   Andy White    15 年前

    我不知道一个键命令,但很多时候我做“r”然后“enter”来断开一行。

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

        3
  •  18
  •   SergioAraujo    15 年前

    将光标放置到位,然后…

      r<Enter>
    
        4
  •  13
  •   Martin Lyne    12 年前

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

    R<enter>

    不需要重新映射。

        5
  •  2
  •   kkress    15 年前

    据我所知,不进入插入模式是不可能的。但是,您可以对其进行类似的宏操作(用您要使用的任何键替换Z)

    nmap Z i<cr><esc>k$
    

    基本上,这将键“z”映射为进入插入模式“i”,插入回车符。 <cr> '离开插入模式' <esc> '向上移动一行'k'并最终转到行的末尾'$'

        6
  •  2
  •   Community Mohan Dere    9 年前

    根据这个重复的问题: 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[回车][转义]

        7
  •  0
  •   Carl G    11 年前

    你可以用录音。将光标放在要插入换行符的位置。类型 qa 开始记录到寄存器 a (您可以使用除 如果你愿意的话。然后类型 i (切换到插入模式) 返回 (插入换行符) 逃跑 (退出插入模式) q (结束录制。)现在可以通过键入 @a (何处) 是您开始录制时使用的寄存器号,因此只需将光标移动到要插入新行并键入的位置即可。 @ .