List 使用Vim标记编号列表

List 使用Vim标记编号列表,list,vim,markdown,List,Vim,Markdown,我正在使用vim写降价。当我键入此项时: 1. test 2. test Vim很烦人,它的格式如下: 1. test 2. test 我的格式选项(tqlna)确实包括n。文件类型为markdown。格式列表PAT如下所示: setlocal formatlistpat=^\\s*\\d\\+\\.\\s\\+\\\|^[-*+]\\s\\+ 部分原因似乎是Vim理解不应该重新格式化以-、*或+开头的列表 如何解决此问题?如果我是对的,那么vim实际上无法识别以+开头的行,而只能识别*和

我正在使用vim写降价。当我键入此项时:

1. test
2. test
Vim很烦人,它的格式如下:

1. test 2. test
我的
格式选项
tqlna
)确实包括
n
。文件类型为
markdown
。格式列表PAT如下所示:

setlocal formatlistpat=^\\s*\\d\\+\\.\\s\\+\\\|^[-*+]\\s\\+
部分原因似乎是Vim理解不应该重新格式化以
-
*
+
开头的列表


如何解决此问题?

如果我是对的,那么vim实际上无法识别以
+
开头的行,而只能识别
*
-
。不幸的是,这是由于vim的内部格式化程序造成的(gq命令使用此格式化程序)。
formatoptions
中的
a
选项告诉vim在您键入时自动使用内部格式化程序,这就是造成一切混乱的原因

如果您关闭了
n
选项并将
formatlistpat
保留,则在键入时,当到达
textwidth
末尾时,应适当换行。但是,第二次尝试使用
gq
格式化文件时,它会再次出错

看起来您需要的是一个
formatprg
,它以您喜欢的方式格式化标记文件。然后您可以设置该选项,并将
a
选项保持为打开状态以进行自动格式化。在找到一个之前,我建议只从
formatoptions
中删除
a
,而不要使用
gq
格式化文件

您可能还希望在模式中的
[-*+]
之前匹配可能的空格。比如说,

setlocal formatlistpat=^\\s*\\d\\+\\.\\s\\+\\\|^\\s*[-*+]\\s\\+

出于某种原因,
want
因为
formatoptions
似乎可以解决这个问题。不过,我无法解释原因。我知道
w
阻止了我所抱怨的行为,但我对这个解决方案不满意,因为正常段落的自动格式化有点怪
want
,我从未尝试过,它似乎能处理所有事情,并使Vim的行为像一个普通的现代软包装文本编辑器

我从这个网站上得到了这个想法:


“我发现fo=在处理RST文档或电子邮件时很有用。也很容易记忆。”

如果是由插件设置的,那么最好在插件上问这个问题。事实上,我已经尝试删除插件,问题仍然是一样的。我会相应地修改我的问题。谢谢你的帮助!实际上,在我的情况下,使用另一个
formatprg
并不是一个解决方案,因为我真的希望Vim在使用它进行标记时表现得像一个普通的文本编辑器。这意味着我不想一直在打gq,我想这会让事情变得更难。所以我不能接受你的回答。我不理解你的评论。也许我没有解释清楚<代码>gq是问题而不是解决方案。如果您将
formatprg
设置为自动格式化,那么您可以再次使用
a
选项来自动格式化。在我看来,一旦将
formatprg
设置为内置格式化程序之外的其他设置,您就不再具有自动格式化功能,这就是导致我编写注释的原因。