在Sublime 2/3中更改/添加语言突出显示语言

时间:2013-08-05 21:11:13

标签: syntax-highlighting sublimetext3

我想在Sublime 2/3中更改/添加语言突出显示。

例如,我希望JavaScript中的关键字this为彩色。

我该怎么做?

我知道C:\Program Files\Sublime Text 3\Packages中存在首选JavaScript文件,但我不知道要更改什么,或者我是否必须在此文件夹%APPDATA%\Sublime Text 3中的某处创建新的JavaScript首选项文件。< / p>

5 个答案:

答案 0 :(得分:92)

语法突出显示由您使用的主题控制,可通过 Preferences -> Color Scheme 访问。主题通过使用范围突出显示不同的关键字,函数,变量等,范围由语言目录/包中.tmLanguage文件中包含的一系列正则表达式定义。例如,JavaScript.tmLanguage文件会将范围source.jsvariable.language.js分配给 this 关键字。由于Sublime Text 3使用.sublime-package zip文件格式来存储所有默认设置,因此编辑单个文件并不是非常简单。

不幸的是,并非所有主题都包含所有范围,因此您需要使用不同的主题来找到一个看起来不错的主题,并为您提供您正在寻找的突出显示。 Sublime Text中包含许多主题,还有更多主题可通过Package Control获得,如果您还没有,我 高度 建议安装。请务必遵循ST3 directions

正如它所发生的那样,我开发了Neon Color Scheme,可通过Package Control获得,您可能需要查看。我的主要目标是尽量使各种语言看起来尽可能好,但我要尽可能多地确定不同的范围 - 比标准主题中包含的更多。虽然JavaScript语言定义不像Python那样彻底,但Neon仍然比MonokaiSolarized等一些默认值具有更多的多样性。

jQuery highlighted with Neon Theme

我应该注意到我使用了@ int3h的Better JavaScript语言定义来代替Sublime附带的语言定义。它可以通过Package Control安装。

<强>更新

最近我发现了另一种JavaScript替代语言定义 - JavaScriptNext - ES6 Syntax。它比基础JavaScript甚至更好的JavaScript具有更多的范围。它在相同的代码上看起来像这样:

JavaScriptNext

此外,由于我最初写了这个答案,@ skuroda已经通过Package Control发布了PackageResourceViewer。它允许您无缝地查看,编辑和/或提取部分或整个.sublime-package包。因此,如果您选择,您可以直接编辑Sublime中包含的配色方案。

另一个更新

随着几乎所有默认软件包on Github的发布,变化已经快速而且激烈地发生。旧的JS语法已被完全重写,以包含JavaScript Next ES6语法的最佳部分,现在可以完全兼容ES6。已经进行了 ton 的其他更改以涵盖角落和边缘情况,提高一致性,并且总体上使其更好。新语法已包含在(此时)最新dev build 3111。

如果您想使用当前beta build 3103的任何新语法,只需在某处克隆Github repo并将JavaScript(或您想要的任何语言)链接到您的Packages目录 - 选择 Preferences -> Browse Packages... ,在系统中找到它。然后,只需在原始repo目录中执行git pull即可刷新任何更改,您就可以享受最新最好的!我应该注意,repo使用新的.sublime-syntax格式而不是旧的.tmLanguage格式,因此它们不适用于3084之前的ST3版本,或者使用ST2(在这两种情况下,您都应该升级无论如何最新的测试版或开发版。)

我目前正在调整我的霓虹色方案来处理新JS语法中的所有新范围,但大多数应该已经涵盖。

答案 1 :(得分:29)

我终于找到了一种定制给定主题的方法。

转到C:\Program Files\Sublime Text 3\Packages并将Color Scheme - Default.sublime-package复制+重命名为Color Scheme - Default.zip。然后解压缩并复制主题,您想要更改为%APPDATA%\Sublime Text 3\Packages\User。 (就我而言,All Hallow's Eve.tmTheme)。

然后您可以使用任何文本编辑器打开它并更改/添加内容,例如在JavaScript中更改this

<dict>
    <key>name</key>
    <string>Lang Variable</string>
    <key>scope</key>
    <string>variable.language</string>
    <key>settings</key>
    <dict>
        <key>foreground</key>
        <string>#FF0000</string>
    </dict>
</dict>

这会将JavaScript文件中的this标记为红色。您可以在Preferences -> Color Scheme -> User -> <Your Name>下选择主题。

答案 2 :(得分:13)

使用通过Package Control安装的PackageResourceViewer插件(如MattDMo所述)。这允许您通过在Sublime Text中打开它并保存文件来覆盖压缩资源。它会自动仅将已编辑的资源保存到%APPDATA%/ Roaming / Sublime Text 3 / Packages /或〜/ .config / sublime-text-3 / Packages /.

特定于op,一旦安装了插件,执行PackageResourceViewer: Open Resource命令。然后选择JavaScript,然后选择JavaScript.tmLanguage。这将在编辑器中打开一个xml文件。您可以编辑任何语言定义并保存文件。这将在用户目录中编写JavaScript.tmLanguage文件的覆盖副本。

可以使用相同的方法编辑系统中任何语言的语言定义。

答案 3 :(得分:4)

“这个”已经在Javascript中着色。

视图 - &GT; Syntax-&GT;并选择要突出显示的语言。

答案 4 :(得分:0)

这是我的食谱

注意:这并不是OP的要求。这些说明将帮助您更改已定义语法匹配规则的项目(注释,关键字等)的颜色。例如,使用这些说明进行更改,以使所有代码注释都变为蓝色,而不是绿色。

我相信OP正在询问如何将this定义为在JavaScript源文件中找到的要着色的项目。

  1. 安装软件包:PackageResourceViewer

  2. Ctrl+Shift+P> [PackageResourceViewer: Open Resource]> [Color Scheme - Default]> [Marina.sublime-color-scheme](或您使用的任何配色方案)

  3. 上面的命令将打开一个新的选项卡,指向文件“ Marina.sublime-color-scheme”。

    • 对我来说,此文件位于我的漫游配置文件%appdata%C:\Users\walter\AppData\Roaming\Sublime Text 3\Packages\Color Scheme - Default\)中。
    • 但是,如果我在 Windows资源管理器中浏览到该路径,则[Color Scheme - Default的子目录不是[Packages]子目录。我怀疑PackageResourceViewer正在做一些虚拟化。

可选步骤:在新的颜色方案标签上:Ctrl+Shift+P> [Set Syntax: JSON]

  1. 搜索要更改的规则。我想让评论可见,所以我搜索了“ Comment

    • 我在"rules"部分中找到了它
 "rules":
    [
        {
            "name": "Comment",
            "scope": "comment, punctuation.definition.comment",
            "foreground": "var(blue6)"
        },
  1. 搜索字符串"blue6":以找到颜色变量定义部分。我在"variables"部分中找到了它。

  2. 使用http://hslpicker.com/之类的工具选择新颜色。

  3. 要么定义一个新的颜色变量,要么覆盖blue6的颜色设置。

    • 警告::覆盖blue6将影响该颜色方案中的所有其他文本元素,这些颜色元素也使用blue6(“标点符号”“访问器”)。
  4. 保存文件,所做的更改将立即应用于所有打开的文件/标签。

注释

Sublime将处理所有这些颜色样式。可能更多。

hsla =色相,饱和度,亮度,alpha rgba =红色,绿色,蓝色,alpha

hsla(151,100%,41%,1) -最后一个参数是Alpha级别(透明度)1 =不透明,0.5 =半透明,0 =全透明

hsl(151,100%,41%)-无Alpha通道

rgba(0,209,108,1)-具有Alpha通道的rgb

rgb(0,209,108)-无Alpha通道