使用VIM在段落之间添加空行

时间:2013-10-14 02:28:36

标签: vim

我正在寻找一个命令来解决这个问题:

  

Lorem ipsum dolor sit amet,consectetur adipisicing elit,sed do   eiusmod tempor incididunt ut labore et dolore magna aliqua。 Ut enim ad   微小的veniam,quis nostrud exercitation ullamco laboris nisi ut   aliquip ex ea commodo consequat。 Duis aute irure dolor in   代表性的velitate velit esse cillum dolore eu fugiat nulla   pariatur。左外行,不接受任何事   culpa qui officia deserunt mollit anim id est laborum。 Ipsum dolor坐   amet,consectetur adipisicing elit。
Duis aute irure dolor in   代表性的velitate velit esse cillum dolore eu fugiat nulla   pariatur。
非专业人士,非法入境者   culpa qui officia deserunt mollit anim id est laborum。

进入这个:

  

Lorem ipsum dolor sit amet,consectetur adipisicing elit,sed do   eiusmod tempor incididunt ut labore et dolore magna aliqua。 Ut enim ad   微小的veniam,quis nostrud exercitation ullamco laboris nisi ut   aliquip ex ea commodo consequat。 Duis aute irure dolor in   代表性的velitate velit esse cillum dolore eu fugiat nulla   pariatur。

     

Excepteur sint occaecat cupidatat non proident,sunt in   culpa qui officia deserunt mollit anim id est laborum。 Ipsum dolor坐   amet,consectetur adipisicing elit。

     

Duis aute irure dolor in   代表性的velitate velit esse cillum dolore eu fugiat nulla   pariatur。

     

Excepteur sint occaecat cupidatat non proident,sunt in   culpa qui officia deserunt mollit anim id est laborum。

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

如果它被包装,这意味着paragraph实际上只有ONE行,并且您实际上在行之间添加了一个空行。试试:

:g/.\n\n\@!/norm o

解释here 如果它没有被包裹(意味着一段中有很多行),我也不知道该怎么做。但根据该网站的解释,您可以尝试通过编写自己的正则规则来管理它!

答案 1 :(得分:1)

:%s/\.\s*\n\(\S\)/\.\r\r\1

使用给定的样本(包含讨厌的尾随空格)获得所需的结果。

我们搜索一个点后跟零个或多个空格字符(因为讨厌的尾随空格),然后是换行符,后跟我们捕获的非空白字符。

我们用一个点替换,接着是两个换行符和我们之前捕获的非空白字符。

(编辑)

以下替换更通用,适合您未指定的要求:

  • 它并不关心每个“段落”如何结束
  • 它也尊重缩进

所以...

:%s/\s*\n\(\s*\S\)/\r\r\1

如果要标准化缓冲区并删除缩进:

:%s/\s*\n\(\s*\)\(\S\)/\r\r\2

或者,反斜杠少......

:%s/\v\s*\n(\s*)(\S)/\r\r\2