首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Vim高亮嵌套区域

Vim高亮嵌套区域
EN

Stack Overflow用户
提问于 2013-03-30 17:29:14
回答 2查看 1.2K关注 0票数 0

我已经和vim合作了几个月了,我仍然在努力提高我与这位伟大的编辑的经验。

我想要做的是为spice netlists (电子产品)创建一个语法高亮文件。

我试图突出以下模式:

.SUBCKT or_gate A B OUT

(*or_gate*是单元格的名称

A、B及该电池的外别针)

我试着用3种不同的颜色突出显示:

  • 一张给.SUBCKT
  • 一个用于or_gate (单元)
  • A,B和OUT的一个(引脚)

所以,我看以.SUBCKT开头的行,我试图找到一种方法来匹配行中不同的单词。

我尝试了许多syn匹配的不同组合,或者嵌套的syn区域,但我只是觉得我做的方法不对。

下面是我的一个尝试的例子:

start=".SUBCKT“ spiceCKT end="$”contains=spiceCell,spicePins start=".SUBCKT"rs=e spiceCell =“$”contained start=".SUBCKT\s\S*"rs=e 区域 spicePins =“$”contained

我尝试使用模式(\s\S*),添加/删除rs=e部件,甚至定义添加\zs和\ze的开始或结束模式。

最后,我没能成功,我只是觉得我让事情变得更复杂了。

任何人都可以帮助我找出我的错误是什么,以及如何处理这种模式突出显示?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-30 20:47:49

您可以尝试使用syn matchlook-behind

代码语言:javascript
复制
syn match spiceCKT /^\s*\.SUBCKT/
syn match spiceCell /\v(^\s*\.SUBCKT\s+)@<=or_gate/
syn match spicePins /\v(^\s*\.SUBCKT\s+or_gate\s+)@<=A B OUT/

我只是做了个小测试。我没有您的语法组,我只是尝试使用默认组,如下所示:

票数 2
EN

Stack Overflow用户

发布于 2013-04-02 20:43:27

谢谢你的回答!确实有用。谢谢你的小费。

唯一的缺点是,当文件必须加载完整的行时,速度有点慢。

我完成你的代码以满足我的需要:

系统匹配spiceCKT /^\s*..SUBCKT/ syn match spiceCell /\v(^\s*.SUBCKT\s+)@<=\S*\s+/ 系统匹配spicePins /\v(^\s*.SUBCKT\s+or_gate\s+)@<=(\s*\S*)*/

当我向下滚动时,带有@<=的线条使屏幕有点滞后。我还在努力想办法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15721369

复制
相关文章

相似问题

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