Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sublimetext 克隆升华文本3突出显示语法定义_Sublimetext_Sublimetext3 - Fatal编程技术网

Sublimetext 克隆升华文本3突出显示语法定义

Sublimetext 克隆升华文本3突出显示语法定义,sublimetext,sublimetext3,Sublimetext,Sublimetext3,是否有一个简单的程序从现有的定义中导出您自己的自定义升华文本3突出显示定义 我安装了《有序》杂志推荐的aapackagedev,但我发现克隆一个会让我走得更快。至少,我想学习如何浏览sublime附带的默认语法定义 如果你真的想完全具体化,我只想实现一个基本的高亮显示方案,根据我自己的定义,给定的一对开始和结束标记之间的任何字符串都会被着色。我自己定义的另一对不同标记之间的任何字符串都会用第二种颜色着色。一个重要的方法是使代币本身也变灰 (Ubuntu 14.04) 谢谢 如果安装,可以打开任何

是否有一个简单的程序从现有的定义中导出您自己的自定义升华文本3突出显示定义

我安装了《有序》杂志推荐的
aapackagedev
,但我发现克隆一个会让我走得更快。至少,我想学习如何浏览sublime附带的默认语法定义

如果你真的想完全具体化,我只想实现一个基本的高亮显示方案,根据我自己的定义,给定的一对开始和结束标记之间的任何字符串都会被着色。我自己定义的另一对不同标记之间的任何字符串都会用第二种颜色着色。一个重要的方法是使代币本身也变灰

(Ubuntu 14.04)


谢谢

如果安装,可以打开任何内置的压缩资源。执行PackageResourceViewer:打开资源,然后选择您熟悉的语言。然后选择扩展名为.tmLanguage的文件。

更新2015-05-10:Sublime Text 3 build 3084引入了一种全新的语法定义格式。它比从TextMate继承的旧系统好得多。新系统将很快投入ST3测试版的公共建设。由于ST3是最新版本,我建议使用编写任何新的Highlighter,而不是使用下面描述的系统


这里有一个关于超级文本语法突出显示的速成班

安装程序 首先,正如@lthreed所指出的,您可以使用
PackageResourceViewer
查看带有Sublime文本的默认包。那些.tmLanguage文件都是plist格式的,很难阅读和理解
PackageDev
可以将plist文件转换为可读性更高的JSON或YAML格式。当您通过查看默认包进行学习时,请确保首先将其转换为YAML。请注意,
PackageDev
可能无法完全转换它。没关系。您只是将代码用作参考

plist是Sublime理解的本机格式,但这并不意味着您应该这样编写。我强烈建议您使用YAML编写荧光笔,并使用
PackageDev
将其转换为plist。不要用JSON编写。JSON不支持原始字符串。所有正则表达式都必须进行双转义。这绝对是一场噩梦。只要使用YAML

您可以通过打开命令面板(
cmd+shift+p
在Mac上)并选择
PackageDev:new YAML syntax definition
来启动新的语法定义。当您准备好测试它时,打开命令调色板并选择
PackageDev:Convert(YAML,JSON,PList)to…
,PackageDev将发现您有一个YAML文件,并且想要转换为PList。转换将获取.YAML tml语言文件,并输出一个升华理解的.tml语言文件。将该文件放在/Packages/User目录中,升华将加载并应用它(您可能需要重新启动)

高级语法高亮显示的工作原理 您正在编写的语法定义不会直接为文本着色。它将作用域名称应用于文本。然后,编写主题(如Monokai和Solarized)的人会出现,并创建将作用域名称与颜色关联的文件。您可以创建自己的作用域名称,但应坚持使用。这些作用域名称对于匹配的代码可能毫无意义。没关系。尽你所能。如果必须组成作用域名称,请使用TextMate作用域名称作为起点。例如,您可以组成一个称为
string.quoted.triple.xxx
的作用域名称,而不是
string.quoted.double.xxx
(其中xxx是您要匹配的语言的文件扩展名)

代码示例 下面是一个文件扩展名为.matt的虚构matt语言的语法定义。它只有两条规则:一条用于匹配管道分隔的字符串,另一条用于匹配具有更复杂分隔符的字符串

#[PackageDev]target_格式:plist,ext:tmLanguage
---
姓名:马特朗
范围名称:source.matt
文件类型:[matt]
模式:
-包括:“#管柱”
-包括:“#复杂字符串”
#存储库中定义的规则可以相互引用。你可以包括
#一条规则在另一条规则里面。
存储库:
#这是开始-结束形式的规则。该规则匹配以
#管道,比如|你好|
管柱:
#可选的“名称”字段允许您将单个范围应用于所有内容,
#包括始端管道。所有作用域名称必须以.matt结尾
名字:一切,马特
#我们必须避开管道角色,因为它是一个特殊的角色
#Oniguruma正则表达式语法(以及大多数其他正则表达式引擎)。
开始:\|
#如果希望管道的颜色不同,则需要使用“beginCaptures”
开始捕捉:
#在正则表达式行话中,begin管道是“捕获的”。捕获组0表示
#整个匹配,在这种情况下只是管道。
“0”:{名称:完整的.begin.match.matt}
#可选的“contentName”字段允许您将范围应用于所有文本
#在(但不包括)始端管道之间。
contentName:stuff.between.the.pipes.matt
模式:
#这些规则仅适用于管道之间的文本。崇高的
#将从头到尾检查规则并尝试匹配文本,因此
#较高的规则具有较高的“优先级”,并将首先得到匹配。
#给定文本“hello here”,Sublime将看到一个“h”字符并移动
#通过自上而下的规则,试图找到一个开始的规则
#加上“h”。#地狱法则将匹配“h”和其他规则
#人物。#hell作用域名称将应用于“hell”文本,并且
#升华将继续尝试在“o”字符处查找下一个匹配项