Vim中纯文本文档的项目符号列表


8

尽管Vim支持列表自动缩进,但默认设置仅覆盖以数字开头的有序列表,例如:

1. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
   tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
2. veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
   commodo consequat.

我还无法弄清楚如何将其扩展到无序的项目符号列表,例如:

* Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
  tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
* veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
  commodo consequat.

更改formatlistpatRegEx并不能达到预期的效果(实际上,它甚至破坏了有序列表)。

Answers:


10

知道您尝试将值设置为什么会有所帮助,但我想您没有正确避免使用反斜杠。

默认值为

formatlistpat=^\s*\d\+[\]:.)}\t ]\s*

但是要实际设置该值(在vimrc或cmdline中),您必须使用

set formatlistpat=^\\s*\\d\\+[\\]:.)}\\t\ ]\\s*

在中对此进行了解释:help option-backslash。一个简单的修改以允许formatlistpat使用*定界的无序列表将是

set formatlistpat=^\\s*[0-9*]\\+[\\]:.)}\\t\ ]\\s*

确实,这可行-非常感谢!我以为我已经完全摆脱了一切(甚至降低了模式的复杂性),但是显然我错了。我可能逃脱了星号,这可以解释我的麻烦...
AnC 2010年

2
这在帮助解释了[]它是更快地使用[[:digits:]*][\d*]而非[0-9*]
阿迪亚

可以使用let而不是来避免引用问题set,例如:let &formatlistpat='^\s*\(\d\+[\]:.)}\t ]\|[*-][\t ]\)\s*'。(除了数字之外,这还增加了对*and的支持-。)
wjv 2014年

@wjv我已经尝试了您的解决方案,它适用于-列表,但不能带有星号。知道是什么原因造成的吗?
languitar,2015年

@wjv似乎是comments变量内部的* ,尽管它是由三部分组成的注释的中间部分,但它使vim将星号与行注释混淆。
languitar

3

除了jamessan撰写的内容(尤其是他formatlistpat关于*列表的建议)外,在formatoptions以下位置设置'c'选项(注释格式)也很重要:

set formatoptions-=c

否则,Vim会在*项目符号列表的格式和注释的格式之间感到困惑。最后,在第二行和后面的行中会有一个额外的*。


不仅如此,q(使用允许格式的注释gqformatoptions标志还会导致出现问题gq。+1
Kazark

1

我在获得a)认可的列表时遇到了一些麻烦,因此我将解决方案发布在这里:

" Recognise lists like 1), 1., a), a., and so on
" Note that | need to be escaped AND preceeded by a literal backslash
set formatlistpat=^\\s*\\([0-9]\\+\\\|[a-z]\\)[\\].:)}]\\s\\+

1

我正在为这个问题写一个新的答案,因为我必须将这个问题和另一个问题的多个答案结合起来才能使它起作用。这是我的最终配置。

set formatlistpat=^\\s*[0-9*]\\+[\\]:.)}\\t\ ]\\s*
set formatoptions-=c
set comments-=mb:*
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.