6

在 Vim 中是否有一种尊重带下划线标题的文本格式?

在 Markdown 中,有两种表示标题的方式:

#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 格式化带下划线的标题?

我想必须有一个使用formatexpror的解决方案formatprg。我研究了par的文档,尽管它非常强大,但它看起来好像不是它的功能之一。所以我想知道是否有另一个可以用于formatprg理解降价的外部程序,或者是否可以使用带有formatexpr设置的 vimscript 来实现。

4

2 回答 2

6

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

如果您的下划线字符串是固定大小的,您可以只添加这些:

:set comments+=:---------------,:===============

如果它们的大小可变(不止一个):

:set comments+=n:--,n:==

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

删除+上面的内容以仅对这些字符串设置注释,而不是添加它们。

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

:h comments
:h format-comments
:h formatoptions
:h fo-table
于 2010-04-21T20:56:54.043 回答
0

至少你可以为它设置一些宏。

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

qa/^===========$/jjv/^===========$/-3<CR>gqq

现在你可以使用你的a宏了。

高温高压

于 2010-04-21T12:22:47.317 回答