我使用的是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扩展名。
强烈建议您使用旧版格式 本文档中描述的,除非与旧版本兼容 是理想的。
所以我需要一些关于如何使用SublimeText3构建新的多语法文件的教程。
答案 0 :(得分:2)
好的我通过安装PackageDev(Ctrl
+ 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
(文件名)。