如何在Vim中以段落格式在一行中重新格式化“gq”ed文本

时间:2010-05-21 06:55:19

标签: vim

我有一些以前使用“gggqG”在vim中格式化的文本文件。现在我需要将它们转换为每段格式一行。我之前看过一种方法(使用:g命令),但我已经忘记了。有人知道吗?

3 个答案:

答案 0 :(得分:13)

我知道有两种方法:

  • 将textwidth设置为大而重新格式化:

    :set tw=1000000
    gggqG
    
  • 使用替代(如果您想在映射中执行此操作,则更合适):<​​/ p>

    :%s/.\zs\n\ze./ /
    

后者的解释:

:%s        " Search and replace across the whole file
/          " Delimiter
.\zs\n\ze. " Look for a character either side of a new-line (so ignore blank lines).
           " The \zs and \ze make the replacement only replace the new-line character.
/ /        " Delimiters and replace the new-line with a space.

答案 1 :(得分:2)

如果你的文字段落用空行分隔,这似乎有效:

:g!/^\s*$/normal vipJ

:g全球(多重复)

!/^\s*$/匹配除空行以外的所有行和仅包含空格的行。

normal进入“正常”模式

vip直观地选择内部段落

J加入行

答案 2 :(得分:0)

也许你应该将textwidth设置为非常大的值(如99999999)(0因某些原因不起作用)并使用gggqG

//我不能告诉你如何用:g重新格式化你的段落而不确切知道段落是什么。也许其他人可以。