Formatting Vim:在不修改带下划线标题的情况下换行文本(“gq”)

Formatting Vim:在不修改带下划线标题的情况下换行文本(“gq”),formatting,markdown,text-formatting,vim,Formatting,Markdown,Text Formatting,Vim,是否有一种在Vim中格式化文本的方法可以尊重带下划线的标题 在降价中,有两种表示标题的方法: #Level 1 heading ##Level 2 heading ###Level 3 heading 仅适用于1级和2级: Level 1 heading =============== Level 2 heading --------------- 我喜欢下划线风格,因为我觉得它读起来更好 当我用Vim编写markdown时,比如说,:set textwidth=72,我希望能够用gggq

是否有一种在Vim中格式化文本的方法可以尊重带下划线的标题

在降价中,有两种表示标题的方法:

#Level 1 heading
##Level 2 heading
###Level 3 heading
仅适用于1级和2级:

Level 1 heading
===============

Level 2 heading
---------------
我喜欢下划线风格,因为我觉得它读起来更好

当我用Vim编写markdown时,比如说,
:set textwidth=72
,我希望能够用
gggqG
重新格式化整个文档,但它将这些带下划线的标题视为段落,并将它们压缩到一行。因此,如果我从以下几点开始:

Lorem ipsum
===========

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. 
在整个文章中运行
gq
之后,我会得到如下结果:

Lorem ipsum ===========

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. 
是否有任何方法可以防止Vim格式化带下划线的标题


我想一定有一个解决方案,使用或。我已经研究了文档,尽管它非常强大,但它看起来似乎不是它的一个特性。所以我想知道是否有另一个外部程序可以与
formatprg
一起使用,它可以理解标记,或者是否可以用vimscript和
formatexpr
设置来实现这一点。

至少可以为它设置一些宏

例如,将文本以某种方式放置在第一段,搜索第一条标题下划线,然后向下移动2行,然后visuallí选择下一条下划线减去3行的区域,然后设置格式:

qa/^===========$/jjv/^===========$/-3<CR>gqq
qa/^================$/JV/^===================$/-3gqq
现在您可以使用
宏了

HTH

sorta工作的一个选项是将下划线字符串添加到
comments
变量中

如果下划线字符串的大小固定,则可以只添加以下内容:

:set comments+=:---------------,:===============
如果它们的大小可变(不止一个):

使用多个允许段落以单个
-
=
开头,并防止后续行以注释字符串开头

删除上面的
+
,将注释仅设置为这些字符串,而不是添加到这些字符串上

在某些情况下,格式会意外地起作用(例如,在连续行上加下划线)。我相信有一个更合适的方法可以做到这一点,但希望这能让你开始

:h comments
:h format-comments
:h formatoptions
:h fo-table

这感觉有点像黑客,但只要
q
标志包含在
formatoptions
设置中,它就可以正常工作。我的下划线字符串通常与上面一行的文本长度相匹配,所以我使用了可变大小设置。谢谢你的帮助。除了答案中列出的帮助参考资料外,我还发现以下内容很有帮助:
:h comments
:h format-comments
:h formatoptions
:h fo-table