我已经和vim合作了几个月了,我仍然在努力提高我与这位伟大的编辑的经验。
我想要做的是为spice netlists (电子产品)创建一个语法高亮文件。
我试图突出以下模式:
.SUBCKT or_gate A B OUT
(*or_gate*是单元格的名称
A、B及该电池的外别针)
我试着用3种不同的颜色突出显示:
所以,我看以.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的开始或结束模式。
最后,我没能成功,我只是觉得我让事情变得更复杂了。
任何人都可以帮助我找出我的错误是什么,以及如何处理这种模式突出显示?
发布于 2013-03-30 20:47:49
您可以尝试使用syn match和look-behind
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/我只是做了个小测试。我没有您的语法组,我只是尝试使用默认组,如下所示:

发布于 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*)*/
当我向下滚动时,带有@<=的线条使屏幕有点滞后。我还在努力想办法。
https://stackoverflow.com/questions/15721369
复制相似问题