【发布时间】:2016-08-22 13:11:33
【问题描述】:
我刚刚升级到 Sublime Text 3。
我正在使用来自 Sublime Text 2 的现有配色方案。但现在多语言代码突出显示不再有效。
谁能帮我想出我的 tmTheme 的自定义范围。
【问题讨论】:
标签: sublimetext2 sublimetext3 tmlanguage
我刚刚升级到 Sublime Text 3。
我正在使用来自 Sublime Text 2 的现有配色方案。但现在多语言代码突出显示不再有效。
谁能帮我想出我的 tmTheme 的自定义范围。
【问题讨论】:
标签: sublimetext2 sublimetext3 tmlanguage
恭喜升级,不错的选择。我正在使用ST3 Build 3120,这是最新的开发版本,因此如果您使用的是public beta Build 3114,语言定义可能会有所改变,但不会显着改变。我还使用Neon Color Scheme(完全披露:我是开发人员),与其他一些配色方案(如 Monokai 或 Solarized)相比,它具有大量的特定范围,它们重用相同的颜色各种不同的语言功能。最后,由于我是一名配色方案设计师,我使用ScopeHunter 和ScopeAlways 之类的工具来确定在文本中的任何位置都处于活动状态的范围和主题元素。
所以,这里是您的代码的屏幕截图以及使用 Sublime 的 HTML 语法的其他几行测试:
这是相同的代码,稍后,使用 PHP 语法捕获:
我们可以看到,在左下角,ScopeAlways 表示在光标所在的位置,HTML 文件的基本作用域是text.html.basic,而PHP 的基本作用域是embedding.php text.html.basic。到目前为止,一切都很好——这很正常。然而,更重要的是,我们可以看到 HTML 和 PHP 在突出显示方面的明显差异,包括与其他属性相比 id 属性的内容,以及嵌入式 PHP 代码的着色(或缺失)(是的,我知道我在底部隔离的 PHP 代码末尾缺少; - 添加一个不会改变任何东西)。
所以,如果您还没有使用它,我的第一个建议是将文件的语法设置为 PHP。您可以从底部栏最右侧的菜单中进行选择,也可以选择 View → Syntax → 并从可用选项中进行选择。
如果你已经在使用 PHP 语法,你应该知道,从今年年初(或多或少)开始,Sublime 的许多language description syntax files 已经被显着或完全重写,其中包括 PHP 和 HTML。在某些情况下,他们迫切需要现代化和加速,并且随着 sublime-syntax 格式的出现(比旧的更强大,但仍受支持,tmLanguage 格式),@987654343 的更好的正则表达式引擎@ 文件,以及由 Will Bond(Package Control 成名)的 Sublime 总部聘请来做很多 Jon Skinner(Sublime 的作者)没有时间或兴趣做的事情, Sublime 本身以及语法定义(同时是开源的)的开发过程都大大增加了。这是一种非常啰嗦的说法,很多东西在相对较短的时间内发生了变化,并且考虑到旧版本的 HTML 和 PHP 语法编写的配色方案可能不适合新版本版本。因此,如果您是这样的人,您可能希望通过新语法并更新您的配色方案,或者您可以尝试其他一些方案,例如已经通过该过程的 Neon。
回到那个奇怪的 id 突出显示 - 我将很快发布一个新版本的 Neon 来解决这个问题,并像 class 或任何其他属性一样为 id 属性的内容着色.我也会尝试找出他们这样做的原因。
我希望这会有所帮助。祝你好运!
【讨论】: