我正在整理用于编辑 Java 清单文件的语法(在 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="^[^#]". 。粗略地说,语法区域应该从第一个哈希字符开始,然后继续向下行,直到找到不以哈希开头的行。

有帮助吗?

解决方案

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

有关的信息,:h fold-expr

其他提示

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

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

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