首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何避免在vim语法突出显示未闭合的区域?

如何避免在vim语法突出显示未闭合的区域?
EN

Stack Overflow用户
提问于 2015-09-20 19:28:09
回答 1查看 60关注 0票数 1

我为如下所示的文件提供了自定义vim语法突出显示:

代码语言:javascript
运行
复制
--- Start foo

++ Block
...
--

++ Another block
--

--- Stop foo

--- Start bar

++ Unclosed block
--- Stop bar

Something outside

--- Start--- Stop之间的一切都是可折叠区域,++--之间的一切都是另一个可折叠区域。问题是,最后一个区域(++ Unclosed block)没有结束线,因此直到文件末尾的所有内容都在这个区域内被识别(和折叠),结果是应该在任何区域和文件夹之外的Something outside被包含在第二级文件夹中。

我可以定义在文件结束之前要求结束匹配的区域吗?

EN

回答 1

Stack Overflow用户

发布于 2015-09-21 15:36:42

根据vim documentation的说法

注意:启动区域的决定仅基于匹配的启动模式。不会检查是否存在匹配的结束模式。

因此,一种可能性是将区域转换为匹配:

代码语言:javascript
运行
复制
syntax match InnerBlock "^++ \_.\{-}\n--$" fold contains=InnerBlock

但这会使它变得更慢。另一种选择是让InnerBlock也停在--- Stop上,这样至少Something outside行就会留在folds之外。注意:必须在OuterBlock定义中添加keepend

代码语言:javascript
运行
复制
syntax region OuterBlock
      \ start="^--- Start .*$"
      \ end="^--- Stop .*$"
      \ fold
      \ contains=InnerBlock
      \ keepend

syn region InnerBlock
      \ start="^++ .*$"
      \ end="^--$"
      \ end="^--- Stop .*$"
      \ fold
      \ contains=InnerBlock
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32678860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档