如何使用 Vim 语法文件将单行注释折叠到一个区域?
题
我正在整理用于编辑 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 中,即如果前面的原子它与零宽度匹配 - #
在这种情况下 -- 与当前位置不匹配。
不隶属于 StackOverflow