在VIM中格式化列表

8
我希望找到一种在Vim中轻松格式化列表的方法。
我已经检查了PAR和Vim的默认格式化程序。

例如:

1. 这是我的文本,这是我的文本,这是我的文本
2. 这是我的文本,这是我的文本,这是我的文本
3. 这是我的文本,这是我的文本,这是我的文本
4. 这是我的文本,这是我的文本,这是我的文本

- 这是我的文本,这是我的文本,这是我的文本
- 这是我的文本,这是我的文本,这是我的文本
- 这是我的文本,这是我的文本,这是我的文本
- 这是我的文本,这是我的文本,这是我的文本

当我选择这些行并使用PAR和VIM的默认格式化为42时,结果如下:


编号列表

使用par格式化:
par错误:
(42) <= (0) + (50)

使用vim格式化:

1. 这是我的文本,这是我的文本,这是
我的文本 
2. 这是我的文本,这是我的文本,这是
我的文本 
3. 这是我的文本,这是我的文本,这是
我的文本 
4. 这是我的文本,这是我的文本,这是
   我的文本 

列表使用“-”

使用par格式化:
过滤了4行(没有更改)

使用vim格式化:

- 这是我的文本,这是我的文本,这是
  我的文本 
- 这是我的文本,这是我的文本,这是
  我的文本 
- 这是我的文本,这是我的文本,这是
  我的文本 
- 这是我的文本,这是我的文本,这是
  我的文本 


Vim在格式化列表方面做得更好,但在编号列表中也不正确。
即使我使用了前缀(“p”)选项,PAR在格式化列表时也会遇到很多问题,如下所示:
'<,'>!par w42p4dh或'<,'>!par w42p3dh

有人知道如何轻松格式化列表吗?

1个回答

7
尝试使用set fo+=n命令。根据:help fo-table所述:
n       When formatting text, recognize numbered lists.  This actually uses
        the 'formatlistpat' option, thus any kind of list can be used.  The
        indent of the text after the number is used for the next line.  The
        default is to find a number, optionally followed by '.', ':', ')',
        ']' or '}'.  Note that 'autoindent' must be set too.  Doesn't work
        well together with "2".                    

        Example: 
                1. the first item
                   wraps 
                2. the second item   

谢谢你,Randy。我尝试将它应用到我的列表中,并在vim中添加了set fo+=nset formatlistpat="^\d\.\s",使用命令行并点击了n。但是出现了错误:\<number\> not found。我做错了什么? - Reman
3
对于简单的编号列表,您无需设置formatlistpat。只需输入“set fo += n”,然后可视化选择列表并按下“gw”或“gq”重新格式化即可。 - Randy Morris
'fo' 设置为什么?":echo &fo"。 - Randy Morris
回显 &fo = tcqro2n,好的,我已经看到了。它不能与“2”一起使用。 - Reman
1
是的,所以根据您更频繁使用哪种格式(列表或缩进段落),您应该使用“n”或“2”。 - Randy Morris
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接