将当前行与Vim中上面的行合并

将当前行与Vim中上面的行合并,vim,macvim,Vim,Macvim,我有一个很长的清单,比如: itemOne itemTwo ,itemThree itemFour itemFive ,itemSix ,itemSeven itemOne itemTwo,itemThree itemFour itemFive,itemSix,itemSeven 以逗号开头的每一行都需要与上面的行合并,如下所示: itemOne itemTwo ,itemThree itemFour itemFive ,itemSix ,itemSeven itemOne itemTwo

我有一个很长的清单,比如:

itemOne
itemTwo
,itemThree
itemFour
itemFive
,itemSix
,itemSeven
itemOne
itemTwo,itemThree
itemFour
itemFive,itemSix,itemSeven
以逗号开头的每一行都需要与上面的行合并,如下所示:

itemOne
itemTwo
,itemThree
itemFour
itemFive
,itemSix
,itemSeven
itemOne
itemTwo,itemThree
itemFour
itemFive,itemSix,itemSeven
我如何才能做到这一点?

您可以通过以下方式做到:

:%s/\n,/,/g
您可以通过以下方式完成:

:%s/\n,/,/g
尝试以下替换:

:%s#\n\ze,##
说明:

  • %s#
    在所有行上开始替换
  • \n
    匹配换行符
  • \ze,
    在逗号之前设置匹配的结尾,这样就不会替换逗号
  • ##
    替换为nothing(删除换行符)
尝试以下替代:

:%s#\n\ze,##
说明:

  • %s#
    在所有行上开始替换
  • \n
    匹配换行符
  • \ze,
    在逗号之前设置匹配的结尾,这样就不会替换逗号
  • ##
    替换为nothing(删除换行符)

    • 一种有效的方法是使用以下
      :global
      命令:

      :g/^,/-j!
      

      一种有效的方法是使用以下
      :global
      命令:

      :g/^,/-j!
      

      与generic:subst相比,我更喜欢这种方法,因为它更具表现力,并且利用了您也可以手动使用的“普通”(无双关语)命令。无需涉猎深奥的转义,
      \r
      \n
      相比,etcI非常喜欢这种方法,而不是泛型:subst,因为它更具表现力,并且利用了“普通”(无双关语)命令,您也可以手动使用。无需涉猎深奥的转义,
      \r
      \n