Sublime文本:如何自定义语法高亮?

时间:2013-03-26 20:38:32

标签: sublimetext2 sublimetext

我使用 Smarty 生成html模板。我目前使用html突出显示,这是很好的,除了它不突出智能标签,ex {foreach} 我尝试安装Smarty软件包,但看起来不太好。

所以基本上我需要能够将大括号中的任何内容添加到标准HTML着色中。 如何做到这一点?

3 个答案:

答案 0 :(得分:24)

背景

@MattDMo是正确的,.tmTheme文件是控制突出显示的主要文件。它是一个带有一系列正则表达式和标签的XML文件,表示哪个RegEx匹配哪种类型的语法元素。

您可以在GitHub上搜索并找到许多已经创建了包含.tmTheme文件的Sublime Text包的人。请注意,您可以直接使用为TextMate创建的包,因为Sublime Text使用相同的约定。 (至少在.tmTheme.tmPreferences文件的情况下都是如此。)

例如,我能够直接采用最初为TextMate制作的ChucK语言的语法高亮包,并使用它SublimeText2。 .tmTheme通过复制TextMate使用的文件立即起作用。我刚删除了其他垃圾文件,然后对.tmTheme进行了一些更改,并添加了对包管理器的支持。

在此处查看该项目:https://github.com/nathanleiby/ChucK.tmbundle

如何安装新语法

包裹控制

理想情况下,您已经想要的语法包含在Sublime Text Package Control中可供下载。在Package Control中搜索并直接安装。 (如果您还没有Package Control,则必须获取它:https://github.com/wbond/package_control_channel/

手动

如果您直接下载.tmTheme文件或.tmBundle,则需要将其复制到ST中相应的包文件夹中。请注意,有一个/Packages文件夹和一个/Packages/User文件夹。 ST2文档建议复制到后者,因为即使主数据库中的其他包在更新期间被删除/修改,也可以保证保留。

在OSX上,该目录为:~/Library/Application Support/Sublime Text 2/Packages/User/

(注意:您可能希望将git clone包放入此文件夹,以便您可以轻松更新它。)

如何创建自己的

如果您想深入挖掘并自定义语法高亮显示,可以参考以下几个地方。

  • 刷上正则表达式。
  • Sublime Text documentation for syntax definitions
  • <ctrl> + <shift> + p。每当您查看文件时,选择任何单词并按下此组合键,然后查看页脚栏。您应该看到一系列语法描述。例如:我刚刚在我正在查看的SQL文件中突出显示了一个单词,响应为:source.sql string.other.quoted.backtick.sql
  • 您可能更愿意使用JavaScript / JSON而不是XML来解析语法。使用PackageDev。您可以通过Package Control获得此功能。它具有允许您在.json(JSON)和.tmTheme(XML)文件之间来回切换的命令。
  • A related question on StackOverflow

买者

这可能很明显,但语法高亮的有用性与您在Sublime Text中选择的Color Scheme有关。 (Sublime Text 2 - &gt; Preferences - &gt; Color Scheme - &gt; ...)

我还没有机会详细探索/验证这一点,但似乎有些颜色方案可以区分更多/更少类型的语法元素。

由于这个原因,我强烈推荐“Monokai”配色方案(特别是“Monokai Soda”变体) - 它似乎“带出了色彩”。

答案 1 :(得分:2)

您可能需要修改.tmTheme,为通过将语法设置为Smarty定义的范围添加自定义突出显示。 Smarty.tmlanguage目录中应该有一个Packages/Smarty/Syntaxes文件。它是XML,因此对于随意阅读来说可能有点难度,但是如果您了解正则表达式并且范围是智能命名的,那么您应该能够弄清楚如何修改主题。

答案 2 :(得分:2)

这很简单

  1. 使用Sublime Text 2默认安装
  2. 打开文件“Packages \ HTML \ HTML.tmLanguage”,如果您搜索字符串 <!-- ,您会注意到(目前)有两个对“Smarty”的引用已被评论。取消评论这些。
  3. Smarty.tmLanguage文件中搜索字符串 scopeName 。这实际上是一个关键字,相关的字符串应该是 text.html.smarty
  4. 将该字符串复制到HTML.tmLanguage代替 source.smarty (您刚刚未评论的最后一个块末尾的键include的字符串)
  5. 就是这样。享受