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

复制VI中的每一行

vim
  •  27
  • arunmoezhi  · 技术社区  · 12 年前

    我有一个包含以下行的文件:

    aa
    bb
    cc
    dd
    

    我想将其转换为:

    aa
    aa
    bb
    bb
    cc
    cc
    dd
    dd
    

    这在VI中可能吗?

    3 回复  |  直到 12 年前
        1
  •  49
  •   kev    6 年前

    试试这个简单的:

    :g/^/norm yyp
    

    还有一个(较短):

    :%s/.*/&\r&
    

    另一个:

    :%!sed p
    
        2
  •  43
  •   NoobEditor    11 年前

    我喜欢 g/^/t.
    这个 g (用于 global )命令将查找与图案匹配的任何线条。
    我们指定的模式是 ^ ,将匹配所有行。
    t 将复制并粘贴,最后
    这个 dot 告诉它粘贴在下面。

    我赢得比赛是为了简洁吗?

        3
  •  12
  •   pb2q    12 年前

    使用 全球司令部 g 要对文件中的每一行进行操作:

    :g/^/norm yyp
    

    这个 命令将对所有与模式匹配的行执行操作。 ^ 是一种可以匹配任何线条的图案。 norm 执行命令 yyp ,它猛拉当前行并将其粘贴。 :g/^/norm Yp 也会起作用。

    看见 :help global 有关该命令的更多详细信息,另请参阅 vim wiki 第页,共页