是否有一种在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格式化带下划线的标题?

我想必须有一个解决方案 formatexpr 或者 formatprg. 。我研究了文档 par, ,尽管非常强大,但看起来这似乎不是其功能之一。因此,我想知道是否还有另一个外部程序可以与 formatprg 理解Markdown,或者是否可以使用Vimscript实现这一目标 formatexpr 环境。

有帮助吗?

解决方案

一个选项 sorta 作品是将下划线字符串添加到 comments 多变的。

如果您的下划线字符串是固定尺寸的,则可以添加这些尺寸:

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

如果它们的大小可变(多个):

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

使用以上的方法允许段落以一个单一开始 - 或者 = 并防止随后的行与注释字符串备份。

去除那个 + 上面只是将评论设置为这些字符串,而不是添加它们。

在某些情况下,格式会意外起作用(例如,连续线上强调)。我敢肯定,有一种更合适的方法可以做到这一点,但希望这会让您入门。

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

其他提示

至少您可以为其设置一些宏。

例如,在第一段中以某种方式搜索第一个标题范围内线,然后向下移动2行,然后Visuallí选择下一条下划线减去3行,然后将其格式化:

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

现在您可以使用您的 a 宏。

Hth

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top