使用.sublime-syntax文件类型在sublimetext 3中突出显示多个语法

时间:2017-12-11 16:19:48

标签: sublimetext3 syntax-highlighting zk zscript

我使用的是zk框架,我需要做一个以XML语法突出显示的sublime-syntax文件,但是在zscript片段中使用java语法高亮显示并且在样式上下文中使用CSS语法。 这是zk代码的一个例子:

<zk>
    <style>
        .myClass{
            width=300px;
        }
    </style>

    <div id="panel1" class="myClass" visible="true" >   
        <hlayout width="100px">
            <image id="icon1" src="/Desktop/image1.png" width="32px"></image>   
            <image id="icon2" src="/Desktop/image1.png" width="50px"></image>   
        </hlayout>
    </div>  

    <zscript><![CDATA[
        try{
            if (panel1.isVisible()) {
                //do something
            }
        }catch(Exception e){
            //catch exception
        }
    ]]></zscript>
</zk>

我看到最近有些事情发生了变化,目前的在线解决方案还不是很清楚,例如在this link我发现了以下注意事项:

  

从Sublime Text Build 3084开始,一种新的语法定义格式   添加了.sublime-syntax扩展名。

     

强烈建议您使用旧版格式   本文档中描述的,除非与旧版本兼容   是理想的。

     

此处提供了文档:   http://www.sublimetext.com/docs/3/syntax.html

所以我需要一些关于如何使用SublimeText3构建新的多语法文件的教程。

1 个答案:

答案 0 :(得分:2)

好的我通过安装PackageDevCtrl + Shift + P,选择Package Control: Install Package,输入PackageDev来解决我的问题为了安装它,我选择了Tools - &gt; Packages - &gt; Package Developement - &gt; New Syntax Definition

我在这里编写了这段代码:

%YAML 1.2
---
# See http://www.sublimetext.com/docs/3/syntax.html

name: zul
file_extensions:
 - zul
scope: text.zul

contexts:
  main:
    - match: ""
      push: "Packages/XML/XML.sublime-syntax"
      with_prototype:

        - match: '< *zscript *>'
          push: Packages/Java/Java.sublime-syntax
          with_prototype:
            - match: '(?=</ *zscript *>)'
              pop: true

        - match: '< *script *>'
          push: Packages/JavaScript/JavaScript.sublime-syntax
          with_prototype:
            - match: '(?=</ *script *>)'
              pop: true

        - match: '< *style *>'
          push: Packages/CSS/CSS.sublime-syntax
          with_prototype:
            - match: '(?=</ *style *>)'
              pop: true
  • File_extensions是使用此语法的扩展程序列表
  • scope对于编程语言是source,对于标记和其他所有内容都是text
  • match是传递给push元素的正则表达式。
  • with_prototype类似于语法突出显示中的异常,您可以在其中为不同的上下文定义具有不同语法的代码段

此示例通常使用 xml 语法,在标记<zscript> ... </zscript>之间使用 java 语法突出显示,并在<style> ... </style>上下文中使用< strong> css 语法。

我将此文件保存在C:\Users\username\AppData\Roaming\Sublime Text 3\Packages\User中,然后我在View - &gt;中创建了此语法文件。 Syntax - &gt; User - &gt; zul(文件名)。