我正在使用vim来写Markdown。当我输入时:
1. test
2. test
Vim令人讨厌并将其格式化为:
1. test 2. test
我的formatoptions
(tqlna
)确实包含n
。文件类型为markdown
。 formatlistpat如下:
setlocal formatlistpat=^\\s*\\d\\+\\.\\s\\+\\\|^[-*+]\\s\\+
部分原因似乎有效,因为Vim明白它不应该重新格式化以-
,*
或+
开头的列表。
我该如何解决这个问题?
答案 0 :(得分:2)
如果我是对的,那么vim实际上无法识别以+
开头而只有*
和-
的行。不幸的是,这是由于vim的内部格式化程序(gq
命令使用此格式化程序)。 a
中的formatoptions
选项告诉vim在您输入时自动使用内部格式化程序,这就是搞砸了所有内容。
如果您取消n
选项并离开formatlistpat
,则在键入时到达textwidth
时应适当换行。但是,第二次尝试使用gq
格式化文件时,会再次将其搞砸。
看起来您需要的是formatprg
,它可以按照您喜欢的方式格式化降价文件。然后,您可以设置该选项并保持a
选项以进行自动格式化。在您找到之前我建议您从a
删除formatoptions
而不使用gq
格式化文件。
您可能还希望在模式中的[-*+]
之前匹配可能的空格。例如,
setlocal formatlistpat=^\\s*\\d\\+\\.\\s\\+\\\|^\\s*[-*+]\\s\\+
答案 1 :(得分:0)
出于某种原因,want
formatoptions
似乎可以解决问题。但是,我无法解释原因。我知道w
阻止了我抱怨的行为,但我对这个解决方案不满意,因为那时正常段落的自动格式化有点时髦。 want
,我从来没有尝试过,似乎会照顾好一切,让Vim的行为就像一个普通的现代软包装文本编辑器。
我从这个网站得到了这个想法:http://blog.ezyang.com/2010/03/vim-textwidth/
“我发现fo =在处理RST文档或电子邮件时非常有用。也很容易记忆。”