【问题标题】:Adding empty line between paragraphs with VIM使用 VIM 在段落之间添加空行
【发布时间】:2013-10-21 13:43:04
【问题描述】:

我正在寻找一个命令来打开它:

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua。 Ut enim 广告 minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat。 Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
Exceptioneur sint occaecat cupidatat non proident, sunt in 过失 qui officia deserunt mollit anim id est labourum。 Ipsum dolor 坐 amet, consectetur adipisicing elit.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla 偏执。
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est labourum。

进入这个:

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua。 Ut enim 广告 minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat。 Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla 帕拉图尔。

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

Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla 偏执。

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

有什么建议吗?

【问题讨论】:

  • 包装好还是没包装好?
  • @yakiang 抱歉,包装了什么?
  • 我不知道怎么解释好..也许你可以看看this
  • @yakiang 我猜它已经包装好了。
  • @alexchenco 在这种情况下,请参阅 superuser.com/a/592508 — 这可能就是您要查找的内容。

标签: vim


【解决方案1】:

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

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

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

【讨论】:

  • 如果没有包装,那两个段落是怎么分开的? :)
  • 我也不知道。其实我觉得很难从两段来判断...
  • Vim 高尔夫::g/.\n\n\@!/pu_
【解决方案2】:
:%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

【讨论】:

  • 对不起,当段落以引号结尾时,这不起作用。
  • @alexchenco,它适用于您的样本。如果您有特殊要求,请在问题中提出。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-04
相关资源
最近更新 更多