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

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

虽然 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 并没有带来预期的结果(事实上,它甚至破坏了有序列表)。

答案1

知道您尝试将值设置为为什么会有所帮助,但我猜您没有正确地转义反斜杠。

默认值为

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

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

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

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

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

答案2

除了 jamessan 所写的内容(特别是他formatlistpat对使用 * 列表的建议)之外,取消设置 'c' 选项(注释格式)也很重要formatoptions

set formatoptions-=c

否则 Vim 会混淆 * 项目符号列表的格式和注释的格式。结果就是第二行和后面的行上多了一个 *。

答案3

我正在为这个问题写一个新的答案,因为我必须把这个问题的多个答案结合起来,另一个问题使其工作。这是我的最终配置。

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

答案4

我在获取已识别列表时遇到了一些麻烦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\\+

相关内容