Markdown在Vim中如何创建有序列表

4

我正在使用vim编写Markdown。当我键入以下内容时:

1. test
2. test

Vim很烦人,格式化后变成了这样:
1. test 2. test

我的formatoptionstqlna)中包含n。文件类型是markdown。格式列表模式如下:

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

部分功能似乎可以正常工作,因为Vim理解它不应重新格式化以-*+开头的列表。

我该如何解决这个问题?


如果是由插件设置的,最好在插件的问题跟踪器上询问(https://github.com/tpope/vim-markdown/issues)。 - Conner
其实我已经尝试过移除插件了,问题依然存在。我会相应地编辑我的问题的。 - user347284
2个回答

2
如果我没错的话,Vim实际上只识别以*-开头的行,而不是+。不幸的是,这是因为Vim的内部格式化器(gq命令使用该格式化器)。您在formatoptions中设置的a选项告诉Vim在输入时自动使用内部格式化器,这正是造成问题的原因。
如果您取消n选项并保留formatlistpat,则在输入时达到textwidth末尾时应适当换行。然而,一旦您尝试使用gq格式化文件,它就会再次出现问题。
看起来您需要的是一个按您喜好格式化Markdown文件的formatprg。然后您可以设置它,并保持a选项自动格式化。在找到一个之前,建议您从formatoptions中删除a,并且不使用gq来格式化您的文件。
您可能还想匹配模式中[-*+]之前可能存在的空格。例如:
setlocal formatlistpat=^\\s*\\d\\+\\.\\s\\+\\\|^\\s*[-*+]\\s\\+

感谢您的帮助!实际上,在我的情况下,使用另一个 formatprg 并不是一个解决方案,因为当我将其用于 Markdown 时,我真的希望 Vim 的行为像普通文本编辑器一样。这意味着我不想一直按 gq,我认为这会使事情变得比它们应该更困难。所以我不能接受你的答案。 - user347284
我不明白你的评论。也许我没有解释清楚?问题不在于“gq”,而在于它并不是解决方案。如果你设置了“formatprg”,那么你可以再次使用“a”选项进行自动格式化。 - Conner
在我看来,一旦您将formatprg设置为内置格式化程序以外的其他内容,似乎您不再拥有自动格式化功能,这就是我写下该评论的原因。 - user347284

0
由于某种原因,将want作为formatoptions似乎可以解决问题。虽然我无法解释为什么。我知道w可以防止我抱怨的行为,但我对此解决方案并不满意,因为普通段落的自动格式化有点奇怪。want是我从未尝试过的,它似乎可以处理所有事情,并使Vim表现得像一个正常的现代软换行文本编辑器。
我从这个网站得到了灵感:http://blog.ezyang.com/2010/03/vim-textwidth/ “我发现在处理RST文档或电子邮件时,fo=want很有用。易于记忆。”

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