3

我正在整理用于编辑 Java Manifest 文件的语法(在 github 上,如果有人感兴趣的话)。我正在尝试折叠多个单行注释(我目前正在与 匹配syntax match manifestComment "#.*")。但是,如果我尝试使用语法区域,那么整个文件都会被标记,整个事情就会崩溃。

我想要实现的是:

# A comment
# Another comment
# A third comment
Manifest-Version: 1

并让它崩溃成:

+--  3 lines: # A comment ----
Manifest-Version: 1 

问题是没有明显的“结束”字符,折叠语法也无济于事;所以我做不到syntax region commentBlock start="^#" end="^[^#]"。粗略地说,语法区域应该从第一个散列字符开始,然后继续向下行,直到找到不以散列开头的行。

4

2 回答 2

2
:set foldmethod=expr
:set foldexpr=getline(v:lnum)[0]==\"#\"

有关信息,:h fold-expr.

于 2010-02-10T19:49:09.000 回答
1

怎么样syntax region commentBlock start="^#" end="^#\@!"

\@!就像(?!pattern)在 Perl 中一样,即如果前面的原子(#在这种情况下)在当前位置不匹配,则它与零宽度匹配。

于 2010-02-10T15:22:36.310 回答