Vim 撤消文本宽度格式

Vim 撤消文本宽度格式

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

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

答案1

像这样

:%s/\(\S\)\n/\1
:%s/\n/&&

应该可以工作。嗯,这里确实可以。

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

第二个将每个换行符替换为两个换行符。&在替换中用于表示“匹配的文本”,因此,此处&&表示“两个换行符”。可以这样写,:%s/\n/\r\r&&要短一些。

答案2

您可以VipJ在每一段中使用:

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

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

qqVipJ2jq

加入段落合并,只需使用@q现在。

答案3

在 Vim 中有很多方法可以做到这一点,但我认为最简单的方法是:

:set tw=9999
gggqG

这会将光标移动到缓冲区的第一行 ( gg),并重新格式化 ( gq) 从那里到最后一行的所有行 ( G)。参见

:help gq

相关内容