Vim 撤销文本宽度格式

Moy*_*amo 4 vim formatting newlines libreoffice

我在 vim 中写了一个 textwidth=80 的文档。我现在想将此文档粘贴到 libreoffice 中进行格式化。问题是换行。在 libreoffice 中,由于 vim 在 80 个字符后插入了换行符,因此行太短。

我使用两个换行符分隔段落(即按两次返回)。有什么办法可以在保留 \n\n 字符的同时删除所有单个 \n 字符?

小智 8

您可以VipJ在每个段落上使用:

  • V: 开始逐行选择。
  • ip: 选择整个段落。
  • J: 将行连接在一起。

因为您用双换行符分隔每个段落,所以我们可以录制一个宏来自动为我们执行此操作:

qqVipJ2jq

要将N 个段落连接在一起,现在只需使用N。@q


rom*_*inl 1

像这样的东西

:%s/\(\S\)\n/\1
:%s/\n/&&
Run Code Online (Sandbox Code Playgroud)

应该管用。嗯,这里确实如此。

第一个替换匹配“非空白字符”(可能更具体),后跟换行符,捕获该“非空白字符”以在替换中使用 ( \1)。实际上,它将每个“段落”变成一行。

第二个用两个换行符替换每个换行符。&在替换中用于表示“匹配的文本”,因此,此处&&表示“两个换行符”。可以写:%s/\n/\r\r,但&&比较短。